Python教程38:多重继承与MRO
Python教程38:多重继承与MRO “大道至简,大巧若拙。” Python支持多重继承,一个类可以继承多个父类。今天我们学习多重继承的机制、方法解析顺序(MRO)以及如何避免常见陷阱。 1. 什么是多重继承 单继承 vs 多重继承 1# 单继承:一个父类 2class Parent: 3 pass 4 5class Child(Parent): 6 pass 7 8# 多重继承:多个父类 9class Father: 10 def skill(self): 11 return "父亲的技能" 12 13class Mother: 14 def talent(self): 15 return "母亲的天赋" 16 17class Child(Father, Mother): 18 """继承两个父类""" 19 pass 20 21# 子类拥有所有父类的方法 22c = Child() 23print(c.skill()) # 父亲的技能 24print(c.talent()) # 母亲的天赋 2. 方法解析顺序(MRO) 当多个父类有同名方法时,Python如何决定调用哪个? 基本规则 1class A: 2 def method(self): 3 return "A的方法" 4 5class B: 6 def method(self): 7 return "B的方法" 8 9class C(A, B): 10 """继承顺序:A, B""" 11 pass 12 13c = C() 14print(c.method()) # A的方法(优先使用第一个父类) 15 16# 查看MRO 17print(C.__mro__) 18# (<class 'C'>, <class 'A'>, <class 'B'>, <class 'object'>) MRO(Method Resolution Order): ...