一、Minxins机制:用于多继承的情况,可以大幅提升可读性。
class Father: # 真正的父类,有三个子类共用功能 def commmon_func(self): pass class FuncMixin: # 其中两个个子类特有的功能,类名用Mixin结尾,读代码时一眼可明意,此为混入的功能,并非父类 def special_func(self): pass class Son_1(FuncMixin, Father): pass class Son_2(FuncMixin, Father): pass class Son_3(Father): pass
二、super方法:在子类的派生型功能中引用父类功能的另一种方法。
1、明确引用法:指名道姓,不依赖继承关系。
class Father: def __init__(self, name, age, gender): self.name = name self.age = age self.gender = gender def func(self): print(self.name) print(self.age) print(self.gender) class Son(Father): def __init__(self, name, age, gender, job): Father.__init__(self, name, age, gender) self.job = job def func(self): Father.func(self) # 用类调用功能,不会自动传参,需要填入 self print(self.job)
2、用super方法调用父类,严格依赖继承关系,会参照发起属性查找的对象或类的mro,以当前位置的下一个位置为起始往后查找。
class Father: def __init__(self, name, age, gender): self.name = name self.age = age self.gender = gender def func(self): print(self.name) print(self.age) print(self.gender) class Son(Father): def __init__(self, name, age, gender, job): super().__init__(name, age, gender) self.job = job def func(self): super().func() # 使用 super方法,会自动传入 self print(self.job)
原文:https://www.cnblogs.com/caoyu080202201/p/12677146.html