最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你了解python中的多態(tài)性

 更新時(shí)間:2023年11月05日 16:25:01   作者:跡憶客  
多態(tài)性是 OOP 的一個(gè)特征,這意味著一個(gè)名稱可以具有不同的功能, 這篇文章主要為大家詳細(xì)介紹了如何在 Python 中實(shí)現(xiàn)多態(tài)性,感興趣的小伙伴可以學(xué)習(xí)一下

多態(tài)性是 OOP 的一個(gè)特征,這意味著一個(gè)名稱可以具有不同的功能。 單個(gè)實(shí)體可以采取不同的形式。

本篇文章將介紹如何在 Python 中實(shí)現(xiàn)多態(tài)性。

Python 中的多態(tài)性

理解這一點(diǎn)的最佳方法是使用 len() 函數(shù)。 對于不同的對象,該函數(shù)有不同的解釋。

對于列表,它將返回存在的總元素;對于字符串,它將返回存在的總字符。

代碼:

lst = ['fql', 'jiyik']
s = 'fqljiyik'
print(len(lst), len(s))

輸出:

2 8

說明 Python 中多態(tài)性的另一個(gè)常見功能是 + 運(yùn)算符。 該運(yùn)算符可以在 Python 中執(zhí)行兩個(gè)數(shù)字之間的加法。

但是,當(dāng)與字符串一起使用時(shí),它充當(dāng)連接運(yùn)算符來組合兩個(gè)字符串。

代碼:

a = 5 + 6
s = 'fql' + 'jiyik'
print(a, s)

輸出:

11 fqljiyik

在 Python 中使用類方法實(shí)現(xiàn)多態(tài)性

Python 中的一切都是對象,并且屬于某個(gè)類。 這些方法與類的對象相關(guān)聯(lián)。

這就是為什么 + 運(yùn)算符和 len() 函數(shù)對不同的對象執(zhí)行不同的功能。 + 運(yùn)算符調(diào)用為不同對象定義不同的魔術(shù)函數(shù)。

我們可以創(chuàng)建我們的類并實(shí)現(xiàn)這一目標(biāo)。 兩個(gè)類可以具有相同名稱的函數(shù),但具有不同的用途和不同的定義。

代碼:

class A:
    def fun(self):
        print("Class A")

class B:
    def fun(self):
        print("Class B")

ob1 = A()
ob2 = B()
for i in (ob1, ob2):
    i.fun()

輸出:

Class A
Class B

在 Python 中使用方法重寫實(shí)現(xiàn)多態(tài)性

Python 中的多態(tài)性也與類繼承相關(guān)。 繼承是指一個(gè)類訪問另一個(gè)類的功能。

一個(gè)類及其子類可能包含同名的函數(shù),我們可以在Python中使用函數(shù)重寫。 使用方法重寫,我們可以在子類中實(shí)現(xiàn)已經(jīng)定義的方法。

我們可以根據(jù)子類重新定義函數(shù)。

代碼:

class A:
    def fun(self):
        print("Class A")

class B(A):
    def fun(self):
        print("Class B")

ob1 = A()
ob2 = B()
for i in (ob1, ob2):
    i.fun()

輸出:

Class A
Class B

在上面的代碼示例中,類 B 繼承自類 A,但 fun() 方法在類 B 中被重寫,并根據(jù)類進(jìn)行定義。

我們還可以在重寫函數(shù)中從 A 類訪問函數(shù) fun()。

代碼:

class A:
    def fun(self):
        print("Class A")

class B(A):
    def fun(self):
        A.fun(self)
        print("Class B")

ob2 = B()
ob2.fun()

輸出:

Class A
Class B

在 Python 中使用函數(shù)和運(yùn)算符重載實(shí)現(xiàn)多態(tài)性

函數(shù)重載是實(shí)現(xiàn)多態(tài)性的一個(gè)有趣的功能。 Python 中沒有此功能,Python 中將調(diào)用最近定義的函數(shù)。

Python 中可以重載運(yùn)算符。 我們知道,不同的運(yùn)算符可以根據(jù)對象類型執(zhí)行不同的功能,使用 + 運(yùn)算符可以清楚地看出。

發(fā)生這種情況是因?yàn)槊慨?dāng)使用運(yùn)算符時(shí)它都會在內(nèi)部調(diào)用魔術(shù)函數(shù)。 例如,+ 運(yùn)算符在內(nèi)部調(diào)用 __add__ 方法。

這個(gè)神奇的函數(shù)在其名稱前后都有雙下劃線。 魔法函數(shù)并不意味著直接調(diào)用,但我們可以為不同的類定義它們來修改不同運(yùn)算符的行為。

代碼:

class A:
    def __init__(self, a):
        self.a = a

    def __add__(self, o):
        return self.a + o.a + 2

ob1 = A(5)
ob2 = A(4)
print(ob1+ob2)

輸出:

11

到此這篇關(guān)于一文帶你了解python中的多態(tài)性的文章就介紹到這了,更多相關(guān)python多態(tài)性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

瑞昌市| 类乌齐县| 五家渠市| 刚察县| 丁青县| 松溪县| 湟源县| 邢台县| 阿尔山市| 孟州市| 平定县| 桐乡市| 毕节市| 韶关市| 衡水市| 威宁| 太仆寺旗| 黑河市| 南靖县| 上虞市| 砀山县| 梅河口市| 射洪县| 古丈县| 利川市| 淄博市| 通辽市| 柞水县| 台北县| 峨眉山市| 东方市| 潼南县| 巢湖市| 子长县| 和田市| 峨边| 禹州市| 侯马市| 祥云县| 柘城县| 区。|