面向对象的三个基本特征是:封装、继承、多态。
Import says
sys.getrefcount(t)
可以得到一个对象有多少次引用
继承:子类继承父类,子类可以使用父类的属性和方法,简化代码;当生成子类对象时,先初始化父类对象,所以如果父类有_ _init_ _()方法时,并且有属性,要通过子类的构造赋值;
一个类可以有多个子类,在子类中调用父类的属性时,在_ _init_ _方法中使用父类.属性,或者self.属性
调用父类方法时,super().父类方法()
总结:当子类继承父类时,子类的构造方法应该包含父类与子类共同的属性,在子类的初始化方法中,将父类的属性传递给父类,子类的属性赋值给子类
方法重写:
子类继承父类时,子类的方法()和父类一样,此时子类重写了父类的方法,当生成子类对象时,调用的是子类的重写方法
三代继承:子类初始化方法需要祖父类、父类及自己的属性,可以调用父类的初始化方法传参,可以重写父类的方法,构造的顺序:先构造祖父类,再构造父类,最后是自己
类名. mro() , 搜查所有的父类,即搜索顺序
当对象没在使用,或程序结束的时候,就启用_ _del_ _方法;在子类中,调用父类的方法,在_ _init_ _中使用父类.属性;或self.属性 或父类 . _ _init_ _(self,参数) ;或super(self,参数) . _ _init_ _
有方法重写,才会有多态