iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Python

30天學Python系列 第 24

Python的class繼承

  • 分享至 

  • xImage
  •  

在 Python 中,class 的繼承允許你從現有的類別創建新類別,這樣可以重用和擴展現有的功能。繼承分為單繼承和多重繼承。下面是幾種不同方式的簡單介紹。

class 繼承

1. 單繼承

單繼承是指一個子類繼承一個父類。子類可以擁有父類的屬性和方法,也可以添加新的屬性或覆蓋父類的方法。

# 定義父類
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__ 方法,用於初始化名字。

2. 子類擴展父類功能

子類不僅可以覆蓋父類的方法,還可以在保留父類功能的基礎上進行擴展。

class Cat(Animal):
    def speak(self):
        return super().speak() + " Meow!"  # 使用 super() 調用父類方法並擴展
  • super() 函數調用了父類的 speak() 方法,並在其基礎上加上貓叫聲 "Meow!"。

3. 多重繼承

多重繼承允許一個子類同時繼承多個父類的屬性和方法。

# 定義兩個父類
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 類同時繼承了 FlyableSwimmable,所以它可以使用兩個類中的方法 fly()swim()

4. 父類初始化的不同方式

直接使用 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 類
  • 在多重繼承中,可以分別初始化每個父類。

上一篇
Python的class
下一篇
Python的檔案處理
系列文
30天學Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言