面向对象的概念:
类: 描述具有相同的属性和方法的对象的集合 理解:类是一个变量和函数的集合
对象:是类的实例,通过类定义的数据结构实例
三大特性:继承、多态、封装
继承:子类继父类
多态:由不同的类实例化得到的对象,调用一个方法,执行的逻辑不同
例如:两个不同字符串调用同一个函数len()
封装:封装的目的是增强安全性和简化编程
创建一个类:
类名叫做 ClassA ,类里面的变量我们称之为属性,
那么就是这个类里面有3个属性,分别是 a ,b和c
除此之外,类里面还有3个类方法 fun1(),fun2()和fun3()
调用类属性和类方法:
类方法如何调用类属性:
@classmethod: class 就是类,method 就是方法
类方法,想要调用类属性,需要以下步骤:
1. 在方法上面,用 @classmethod 声明该方法是类方法。只有声明了是类方法,才能使用类属性
2. 类方法想要使用类属性,在第一个参数中,需要写上 cls , cls 是 class 的缩写,其实意思就是把这个类作为参数,传给自己,这样就可以使用类属性了
3. 类属性的使用方式就是 cls.变量名
无论是 @classmethod 还是 cls ,都是不能省去的
类方法传参:
类和对象的关系:
类是对象的模板,先有类,才能制作出对象
类就相对于工厂里面的模具,对象就是根据模具制造出来的产品
从模具变成产品的过程,我们就称为类的实例化
类实例化之后,就变成对象了。也就是相当于例子中的产品
类的实例化
类方法里面没有了 @classmethod 声明了,不用声明他是类方法
类方法里面的参数 cls 改为 self
类的使用,变成了先通过 实例名 = 类() 的方式实例化对象,为类创建一个实例,然后再使用 实例名.函数() 的方式调用对应的方法 ,使用 实例名.变量名 的方法调用类的属性
类方法的参数为什么 cls 改为 self ?
其实这并不是说一定要写这个,你改为什么字母,什么名字都可以
使用 cls 和 self 是我们的编程习惯,这也是我们的编程规范
因为 cls 是 class 的缩写,代表这类 , 而 self 代表这对象的意思
所以啊,这里我们实例化对象的时候,就使用 self
而且 self 是所有类方法位于首位、默认的特殊参数。
当你把类实例化之后,里面的属性和方法,就不叫类属性和类方法了,改为叫实例属性和实例方法,也可以叫对象属性和对象方法
因为一个类是可以创造出多个实例对象出来的
a = ClassA()
b = ClassA()
初始化函数:
__init__(self) 函数就是初始化函数,也叫构造函数
初始化函数的写法是固定的格式:中间是 init,意思是初始化,然后前后都要有【两个下划线】,然后 __init__() 的括号中,第一个参数一定要写上 self,不然会报错
构造函数(初始化函数)格式如下:
def __init__(self,[...):
既然在创建的时候,会调用构造函数,那么理所当然,这个当一个类销毁的时候,就会调用析构函数。
析构函数语法如下:
def __del__(self,[...):
类的继承
调用父类的方法:
父类方法重写
多态