面向对象编程之mixins机制及super方法

一、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)

猜你喜欢

转载自www.cnblogs.com/caoyu080202201/p/12677146.html
今日推荐