多继承
class 类名(父类1,父类2) ----- 默认使用第一个父类
重写父类方法
方法名和父类方法名一样
当父类和子类的方法名重名时,默认使用的是子类中的方法
调用被重写的父类的方法
父类名.方法名(self)
super().方法ming() 使用super最好吧继承面调出来 类名._mro_ 当前类的下一个类的方法
super(类名,self).dark() 指定类的下一个类的方法
调用父类的魔法方法
添加一些 方法
多态的概念
鸭子类型
不同的子类调用相同的父类的方法, 可以增减代码的灵活 体现代码效果的多种形态
多态是以继承和重用代码方法为前提 继承关系 子类的方法名和父类一样
实例属性 和实例方法
self.属性 对象的属性 实例化属性
方法(self) 对象的方法 实例化方法
实例化属性 通过实例化方法去改
创建一个对象就开辟一个空间
类属性 和类对象
类名就是 类对象
类属性 变量名 = 值 # 类的属性 = 值 -------- 在内存中只有一份 可以给多个数据共享 在类外面该 ; 修改类的属性 ----- 类对象.属性 = 值
在类里面改 : 要通过类的方法去改
类的属性可以根据类的对象去修改
节约内存
类的方法的格式
@classmmethod
def 对象名(cls):
cls.money ------------- 类的属性
调用类方法
类名.方法名() 不规范调用 对象.方法名------ 类属性数据共享对象可以调用
静态方法 不需要传递参数 , 内存中只有一次 没有self 没有cls
@staticmethod
def 方法名()
调用
类名.方法名
实例属性 要求每个对象为其单独开辟一份内存空间 来记录数据吗\, 而 类属性为全类所共有,进展用一份内存,更加节省内存空间
私有属性
格式 __属性 加两个下划线
作用 : 为了避免脏数据 保护属性的安全
在外部不允许改
私有的属性在类外不能被访问 在类里面允许改 可以被访问
私有的方法只能在类里面可以用
私有方法
在方法前面加了两个下划线
私有方法只能在类内部使用
私有方法和私有属性设计目的
保护数据或操作的安全性
向使用者隐藏核心开发细节
单例模式
创建多个对象 内存中只开辟一个空间
instance == none 标识没有创建过对象