面向对象编程
面向对象的特性如下:
类:具有相同属性和方法的一类事物,成为类。
对象:类的实例化后的结果,一个类可以实例化多个对象,每个对象也可以不同的属性。
封装:在类中对数据的赋值,类里面包含着类的数据和方法。
继承:一个类可以派生出子类,在父类定义的属性方法自动被子类继承。
多态:一个类可以有多个子类,每个子类继承父类的属性和方法,但是对父类的方法做了不同的实现,这就是同一个事物表现出不同的形态。
例子:
#定义类 class Dog: name='egon' #静态属性 def bule(self): #定义一个方法 print("%s 汪汪汪" %Dog.name) f=Dog() #把这个类实例化,相当于创建了一个对象 f.bule() #调用类中的方法
结果:
C:\Users\yangjianbo\AppData\Local\Programs\Python\Python36\python.exe C:/Users/yangjianbo/PycharmProjects/untitled/第七课面向对象/dog.py
egon 汪汪汪
实例化
调用类的时候,会在内存中打开一个空的空间,类会把传入的参数
__init__函数
名称:构造函数
作用:类的实例初始化
类变量
作用:大家共用的属性,节省开销。
析构函数:在实例释放和销毁的时候,执行析构函数,通常做一些扫尾工作。
def __del__(self):
私有方法
在方法前面加__
私有属性
在属性前面加__
继承
先写一个父类:
例子:
class Animal(object): def __init__(self,name,age): self.name=name self.age=age class Person(Animal): def __init__(self,name,age,aggr): Animal.__init__(self,name,age) self.aggr=aggr class Dog(Animal): def __init__(self, name, age, aggr): Animal.__init__(self,name,age) self.aggr = aggr egg=Dog('egon',18,'bbbb') print(egg.name)
多继承:
经典类:
class Jiaoshi: def __init__(self,name,age): self.name=name self.age=age class Jiaoshou(Jiaoshi): def __init__(self,name,age,xingwei): Jiaoshi.__init__(self,name,age) #经典类的写法 self.xingwei=xingwei b=Jiaoshou('yangjianbo',18,'sleep')
新式类:
class Jiaoshi(object): def __init__(self,name,age): self.name=name self.age=age class Jiaoshou(Jiaoshi): def __init__(self,name,age,xingwei): super(Jiaoshou,self).__init__(name,age) #新式类的写法 b=Jiaoshou('yangjianbo',18,'sleep')