面向对象编程oop

面向对象:按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的方法。

面向对象编程:是一种解决软件复用的设计和编程方法。这种方法把软件系统中相近相似的操作逻辑和操作、应用数据、状态,以类的形式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。

类和对象

类:是具有一组 相同或相似属性和行为的一系列对象的集合。

对象:类的实例化,具象化。

类是对象 的抽象化,对象是类的一个实例。

定义类和对象

类结构:类名采用大驼峰

class 类名:

​ 属性

​ 方法

对象格式:

对象名=类名()

class Person:
    name=''	#类属性
    age=12
    def eat(self):	#实例方法
        self.name='吃饭'    #实例属性
        print('kkkkkk')
        pass
    pass

# 创建一个对象
xm=Person()
xm.eat()    #调用函数

实例方法和属性

在类的内部,使用def关键字可以定义一个实例方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数。

类属性:在类的内部定义的变量。

实例属性:定义在方法里面使用self引用的属性。

_init__方法

class People:
    def __init__(self): #初始化方法,实例化对象的时候自动调用,完成一些初始化设置
        '''
        实例属性的声明
        '''
        self.name='kk'
        self.age=12
        self.sex='女'
        pass
    def eat(self):
        '''
        吃的行为
        '''
        print('吃吃吃吃吃吃吃吃吃吃')
        pass
    pass

xx=People()
xx.name='信息'  #添加实例属性
xx.age=12       #添加实例属性
xx.eat()

init 传递参数:

class People:
	def __init__(self,name,age,sex): 
        '''
        实例属性的声明
        '''
        self.name=name
        self.age=age
        self.sex=sex
        pass
    pass

ad=People('aa',12,'女')
  1. Python自带的内置函数,具有特殊的函数,使用双下划线 包起来的
  2. 是一个初始化的方法,用来定义实例属性和初始化数据的,在创建对象的时候自动调用,
  3. 利用传参机制可以让我们定义功能更加强大并且方便

self和对象指向同一个内存地址,可以认为self就是对象的引用。

self特点:

  1. 只有在类中定义,实例方法的时候采用意义,在调用时候不必传入相应的参数,自动指向
  2. self的名字是可以更改的,可以定义成其他名字,只是约定俗成的定义为 self
  3. self 指的是 类实例对象本身,相当于java中的this

魔法方法

在Python中,有一些内置好的特定的方法,方法名“__xxx__",在进行特定的操作时会自动被调用。

常见的魔法方法:

__init__:初始化一个类,在创建实例对象为其赋值时使用。

__str__:在将对象转换成字符串str(对象)测试的时候,打印对象的信息。

__new__:创建并返回一个实例对象,调用一次,就会得到一个对象。

__class__:获得已知对象的类

__del__:对象在程序运行结束后进行对象销毁的时候调用这个方法,来释放资源。

class People:
    def __init__(self,name,age,sex): #
        '''
        实例属性的声明
        '''
        self.name=name
        self.age=age
        self.sex=sex
        pass
    def __str__(self):
        '''
        打印对象
        '''
        return '%s  , %d  岁, %s'%(self.name,self.age,self.sex)
        pass
    def __new__(cls,*args,**kwargs):
        '''
        创建对象实例的方法,每调用一次,就会生成一个新的对象

        场景:可以控制创建对象的一些属性限定,经常用来做单例模式的时候来使用
        '''
        return object.__new__(cls)  #在这里真正创建对象实例
        pass
    pass

xx=People('xx',12,'女')
print(xx)

__new____init__函数的区别:

__new__:类的实例化方法,必须要返回该实例,否则对象创建不成功。至少有一个参数是cls代表要实例化的类,此参数在实例化时由Python解释器自动提供。比__init__函数先执行。

__init__:用来做数据属性的初始化工作,也可以认为是实例的构造方法,接受类的实例self并对其进行构造。

posted on 2021-07-16 21:24  鬼灯  阅读(38)  评论(0编辑  收藏  举报