目录
mro方法(当多个父类中有同名的方法时,按照继承的顺序调用):
方法无重载(不能重名)
也就是说不能设置重名的方法,会被覆盖
私有属性和私有方法
加了双下划线后变成了私有属性不能访问,要想访问要如下图方式、
私有方法类似,外部调用要用_(单)xxxxx__(双).xxx()调用
@property装饰器
原理上与下面的方法一样,相比之下调用及修改更为简单
get、set方法
传统的设置方法
继承
所有的类都是object的子类
显式的调用父类的初始化方法才可以,不然解释器不会去调用,但是其他的方法都是可以直接用
私有属性也被继承,可以用调用私有属性的方法
调用私有方法的语句
多重继承
会结构变得很复杂,一般不推荐使用
基本语法如上,c是A和B的子类
mro方法(当多个父类中有同名的方法时,按照继承的顺序调用):
例如
结果
类成员的继承和重写
上面是父类的introduce,下面是子类重写的introduce,结果自然是输出子类的
查看类的继承结构
结果
c属于b属于a属于object
Object根类
分别打印object和一个自己定义的类
重写object的__str__方法
默认打印信息,当修改后,默认打印类则显示如下
super()获得父类的定义
比如当子类和父类都有say时,可以用super直接调用父类的方法
A.say注释和super结果相同
多态
结果
首先,isinstance(m,Man),判断m是不是MAN的子类,是子类则执行这个m.eat,输入不同类则输出不同结果,就叫做多态