1 # 惯性写法 2 父类: __init__(self, 参数1, 参数2,..): 3 self.属性1 = 参数1 4 self.属性2 = 参数2 5 .... 6 子类: __init__(self, 参数1, 参数2,....) 7 super().__init__(参数1, 参数2,...) 8 self.新增属性 = 参数 9 10 # 子类继承父类, 如果子类中没有init方法, 创建子类对象时, 会自动调用父类的init方法; 11 # 子类继承父类, 如果子类中有init方法, 创建对象时, 就不会调用父类的init方法了, 12 # 如果需要使用父类的init方法, 则程序员需要手动调用super().__init__(参数1, 参数2,...)
1 class A: 2 def func1(self): 3 print("A") 4 5 class B: 6 def func1(self): 7 print("B") 8 9 class C: 10 def func1(self): 11 print("C") 12 13 class D(A, B, C): 14 pass 15 16 d = D() 17 d.func1() # A 18 print(D.__mro__) # (<class ‘__main__.D‘>, <class ‘__main__.A‘>, <class ‘__main__.B‘>, <class ‘__main__.C‘>, <class ‘object‘>) 19 print(D.mro()) # [<class ‘__main__.D‘>, <class ‘__main__.A‘>, <class ‘__main__.B‘>, <class ‘__main__.C‘>, <class ‘object‘>]
1 class Father: 2 def say(self): 3 print("父亲喊儿子吃饭") 4 5 6 class Son(Father): # 子类继承自父类 7 def say(self): # 子类中重写父类的方法 8 print("儿子主动回家吃饭") 9 10 11 def func(obj): # obj 是一个对象 12 if isinstance(obj, Father): # 判断obj是否是Father类的对象 13 obj.say() 14 else: 15 print("不是父亲和儿子") 16 17 18 f = Father() 19 s = Son() 20 21 func(f) # 父亲喊儿子吃饭 22 func(s) # 儿子主动回家吃饭 23 24 25 class Duck: 26 def say(self): 27 print("gaga") 28 29 30 def func2(obj): # obj 是一个对象 31 obj.say() 32 33 34 d = Duck() 35 func2(d) # 调用函数, 传参为鸭子类对象 gaga 36 func2(f) # 调用函数, 传参为父亲类对象 父亲喊儿子吃饭 37 func2(s) # 调用函数, 传参为儿子类对象 儿子主动回家吃饭
原文:https://www.cnblogs.com/Tree0108/p/12112393.html