面向对象编程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,'女')
self和对象指向同一个内存地址,可以认为self就是对象的引用。
self特点:
魔法方法
在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并对其进行构造。