Python知識(shí)分享網(wǎng) - 專業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
Python 類的繼承
發(fā)布于:2023-09-12 11:07:57

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

 

類的繼承

 

 

繼承是面向?qū)ο蟮娜筇卣髦?,也是?shí)現(xiàn)軟件復(fù)用的重要手段。Python 的繼承是多繼承機(jī)制,即一個(gè)子類可以同時(shí)有多個(gè)直接父類。 語法:

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

子類繼承父類的屬性和方法,同時(shí)子類可以擴(kuò)展新的屬性和方法。

我們來看一個(gè)實(shí)例:

 

# 定義一個(gè)水果類,作為父類
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()

 

運(yùn)行輸出:

 

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

 

多繼承實(shí)例:

 

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

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


class Food:
    # 父類屬性 價(jià)格
    price = None

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


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

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

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


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

 

運(yùn)行輸出:

 

口感:果肉芳香
香蕉顏色:黃色
價(jià)格:10
口感:果肉芳香,價(jià)格:10,顏色:黃色

 

 

重寫父類屬性和方法

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

 

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

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


class Food:
    # 父類屬性 價(jià)格
    price = None

    # 父類方法 打印價(jià)格
    def say_price(self):
        print(f"價(jià)格:{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},價(jià)格:{self.price},顏色:{self.color}"

    # 重寫父類方法 打印價(jià)格
    def say_price(self):
        print(f"香蕉價(jià)格:{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)

 

運(yùn)行輸出:

 

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

 

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

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

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

 

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

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


class Food:
    # 父類屬性 價(jià)格
    price = 8

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


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

    # 重寫父類屬性
    price = 9

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

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


b1 = Banana()
b1.say_price()

 

運(yùn)行效果:

 

父類屬性打?。?,8
價(jià)格:9
價(jià)格:9
香蕉價(jià)格:9

 

 

 

轉(zhuǎn)載自: