继承与MRO:复用代码与多重继承
单继承
python
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
return "Some sound"
class Dog(Animal):
def speak(self):
return f"{self.name} barks"
dog = Dog("Buddy")
print(dog.speak()) # Buddy barkssuper()调用父类方法
python
class Vehicle:
def __init__(self, brand):
self.brand = brand
class Car(Vehicle):
def __init__(self, brand, model):
super().__init__(brand)
self.model = model
car = Car("Toyota", "Camry")
print(car.brand, car.model) # Toyota Camry多重继承与MRO
python
class A:
def method(self):
print("A")
class B(A):
def method(self):
print("B")
super().method()
class C(A):
def method(self):
print("C")
super().method()
class D(B, C):
def method(self):
print("D")
super().method()
d = D()
d.method()
# 输出:D B C A
# 查看MRO
print(D.__mro__)
# (<class 'D'>, <class 'B'>, <class 'C'>, <class 'A'>, <class 'object'>)练习
- 形状继承:Shape基类,Circle和Rectangle子类实现area()。
- super()链:三层继承中使用super()。
- 多重继承:Mixin模式实现日志功能。
答案:第四章答案
下一节:特殊方法