Python知識分享網(wǎng) - 專業(yè)的Python學習網(wǎng)站 學Python,上Python222
Python 類的繼承
匿名網(wǎng)友發(fā)布于:2023-09-12 11:07:57
(侵權舉報)

Python 7天快速入門完整視頻教程https://www.bilibili.com/video/BV1o84y1Z7J1

 

類的繼承

 

 

繼承是面向對象的三大特征之一,也是實現(xiàn)軟件復用的重要手段。Python 的繼承是多繼承機制,即一個子類可以同時有多個直接父類。 語法:

class 子類(父類1,父類2,...):

子類繼承父類的屬性和方法,同時子類可以擴展新的屬性和方法。

我們來看一個實例:

 

# 定義一個水果類,作為父類
class Fruit:
    # 父類屬性 口感
    taste = None

    # 父類方法 打印口感
    def say_taste(self):
        print(f"口感:{self.taste}")


# 定義香蕉子類,繼承父類Food
class Banana(Fruit):
    # 子類屬性 顏色
    color = None

    def say_color(self):
        print(f"香蕉顏色:{self.color}")


b1 = Banana()
b1.taste = "果肉芳香"
b1.say_taste()
b1.color = "黃色"
b1.say_color()

 

運行輸出:

 

口感:果肉芳香
香蕉顏色:黃色

 

多繼承實例:

 

# 定義一個水果類,作為父類
class Fruit:
    # 父類屬性 口感
    taste = None

    # 父類方法 打印口感
    def say_taste(self):
        print(f"口感:{self.taste}")


class Food:
    # 父類屬性 價格
    price = None

    # 父類方法 打印價格
    def say_price(self):
        print(f"價格:{self.price}")


# 定義香蕉子類,繼承父類Food
class Banana(Fruit, Food):
    # 子類屬性 顏色
    color = None

    def say_color(self):
        print(f"香蕉顏色:{self.color}")

    def __str__(self):
        return f"口感:{self.taste},價格:{self.price},顏色:{self.color}"


b1 = Banana()
b1.taste = "果肉芳香"
b1.say_taste()
b1.color = "黃色"
b1.say_color()
b1.price = "10"
b1.say_price()
print(b1)

 

運行輸出:

 

口感:果肉芳香
香蕉顏色:黃色
價格:10
口感:果肉芳香,價格:10,顏色:黃色

 

 

重寫父類屬性和方法

當子類根據(jù)業(yè)務需求,對父類方法不滿意,我們可以在子類里重寫父類方法,當然屬性也可以重寫。

 

# 定義一個水果類,作為父類
class Fruit:
    # 父類屬性 口感
    taste = None

    # 父類方法 打印口感
    def say_taste(self):
        print(f"口感:{self.taste}")


class Food:
    # 父類屬性 價格
    price = None

    # 父類方法 打印價格
    def say_price(self):
        print(f"價格:{self.price}")


# 定義香蕉子類,繼承父類Food
class Banana(Fruit, Food):
    # 子類屬性 顏色
    color = None

    # 重寫父類屬性
    price = 9

    def say_color(self):
        print(f"香蕉顏色:{self.color}")

    def __str__(self):
        return f"口感:{self.taste},價格:{self.price},顏色:{self.color}"

    # 重寫父類方法 打印價格
    def say_price(self):
        print(f"香蕉價格:{self.price}")


b1 = Banana()
b1.taste = "果肉芳香"
b1.say_taste()
b1.color = "黃色"
b1.say_color()
print(b1.price)
b1.price = "10"
b1.say_price()
print(b1)

 

運行輸出:

 

口感:果肉芳香
香蕉顏色:黃色
9
香蕉價格:10
口感:果肉芳香,價格:10,顏色:黃色

 

我們self調(diào)用的是子類繼承下來的屬性和方法。如果我們想調(diào)用父類的屬性和方法,可以通過如下兩種方式:

方式一:父類名.父類屬性或者方法(self)

方式二:super().父類屬性或者方法()

 

# 定義一個水果類,作為父類
class Fruit:
    # 父類屬性 口感
    taste = None

    # 父類方法 打印口感
    def say_taste(self):
        print(f"口感:{self.taste}")


class Food:
    # 父類屬性 價格
    price = 8

    # 父類方法 打印價格
    def say_price(self):
        print(f"價格:{self.price}")


# 定義香蕉子類,繼承父類Food
class Banana(Fruit, Food):
    # 子類屬性 顏色
    color = None

    # 重寫父類屬性
    price = 9

    def say_color(self):
        print(f"香蕉顏色:{self.color}")

    # 重寫父類方法 打印價格
    def say_price(self):
        print(f"父類屬性打?。簕super().price},{Food.price}")
        # 父類方法調(diào)用
        super().say_price()
        Food.say_price(self)
        print(f"香蕉價格:{self.price}")


b1 = Banana()
b1.say_price()

 

運行效果:

 

父類屬性打?。?,8
價格:9
價格:9
香蕉價格:9

 

 

 

轉載自: