在 Python 中,class
的繼承允許你從現有的類別創建新類別,這樣可以重用和擴展現有的功能。繼承分為單繼承和多重繼承。下面是幾種不同方式的簡單介紹。
class
繼承單繼承是指一個子類繼承一個父類。子類可以擁有父類的屬性和方法,也可以添加新的屬性或覆蓋父類的方法。
# 定義父類
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
return f'{self.name} makes a sound.'
# 定義子類,繼承 Animal 類
class Dog(Animal):
def speak(self): # 覆蓋父類的方法
return f'{self.name} barks.'
# 創建實例
my_dog = Dog('Buddy')
print(my_dog.speak()) # 輸出: Buddy barks.
Dog
類繼承了 Animal
類,並覆蓋了 speak()
方法,使其輸出「狗叫」的行為。Dog
繼承了 Animal
的 __init__
方法,用於初始化名字。子類不僅可以覆蓋父類的方法,還可以在保留父類功能的基礎上進行擴展。
class Cat(Animal):
def speak(self):
return super().speak() + " Meow!" # 使用 super() 調用父類方法並擴展
super()
函數調用了父類的 speak()
方法,並在其基礎上加上貓叫聲 "Meow!"。多重繼承允許一個子類同時繼承多個父類的屬性和方法。
# 定義兩個父類
class Flyable:
def fly(self):
return 'I can fly.'
class Swimmable:
def swim(self):
return 'I can swim.'
# 定義子類,同時繼承 Flyable 和 Swimmable
class Duck(Flyable, Swimmable):
pass
# 創建實例
my_duck = Duck()
print(my_duck.fly()) # 輸出: I can fly.
print(my_duck.swim()) # 輸出: I can swim.
Duck
類同時繼承了 Flyable
和 Swimmable
,所以它可以使用兩個類中的方法 fly()
和 swim()
。直接使用 super()
初始化父類
class Bird(Animal):
def __init__(self, name, wing_span):
super().__init__(name) # 用 super() 初始化父類屬性
self.wing_span = wing_span
super()
調用父類的 __init__
方法來初始化 name
,然後再初始化子類特有的屬性 wing_span
。同時初始化多個父類
class Amphibian(Flyable, Swimmable):
def __init__(self):
Flyable.__init__(self) # 初始化 Flyable 類
Swimmable.__init__(self) # 初始化 Swimmable 類