一文帶你了解python中的多態(tài)性
多態(tài)性是 OOP 的一個(gè)特征,這意味著一個(gè)名稱可以具有不同的功能。 單個(gè)實(shí)體可以采取不同的形式。
本篇文章將介紹如何在 Python 中實(shí)現(xiàn)多態(tài)性。
Python 中的多態(tài)性
理解這一點(diǎn)的最佳方法是使用 len() 函數(shù)。 對(duì)于不同的對(duì)象,該函數(shù)有不同的解釋。
對(duì)于列表,它將返回存在的總元素;對(duì)于字符串,它將返回存在的總字符。
代碼:
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 中的一切都是對(duì)象,并且屬于某個(gè)類。 這些方法與類的對(duì)象相關(guān)聯(lián)。
這就是為什么 + 運(yùn)算符和 len() 函數(shù)對(duì)不同的對(duì)象執(zhí)行不同的功能。 + 運(yùn)算符調(diào)用為不同對(duì)象定義不同的魔術(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ù)對(duì)象類型執(zhí)行不同的功能,使用 + 運(yùn)算符可以清楚地看出。
發(fā)生這種情況是因?yàn)槊慨?dāng)使用運(yùn)算符時(shí)它都會(huì)在內(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python logging管理不同級(jí)別log打印和存儲(chǔ)實(shí)例
這篇文章主要介紹了Python logging管理不同級(jí)別log打印和存儲(chǔ)實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
python項(xiàng)目運(yùn)行導(dǎo)致內(nèi)存越來越大的原因詳析
最近在跑python程序時(shí),出現(xiàn)占用的內(nèi)存不斷增加的情況,下面這篇文章主要給大家介紹了關(guān)于python項(xiàng)目運(yùn)行導(dǎo)致內(nèi)存越來越大的原因詳析,本文通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
Python利用openpyxl/xlrd/xlwt和pandas操作Excel
Python提供了多個(gè)強(qiáng)大的庫來操作Excel文件,主要包括openpyxl、xlrd/xlwt和pandas,下面將介紹這些庫的基本用法,希望對(duì)大家有所幫助2026-03-03
使用BeautifulSoup爬蟲程序獲取百度搜索結(jié)果的標(biāo)題和url示例
這篇文章主要介紹了使用BeautifulSoup編寫了一段爬蟲程序獲取百度搜索結(jié)果的標(biāo)題和url的示例,大家參考使用吧2014-01-01
Python Opencv實(shí)現(xiàn)圖像輪廓識(shí)別功能
這篇文章主要為大家詳細(xì)介紹了Python Opencv實(shí)現(xiàn)圖像輪廓識(shí)別功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
Python pandas.DataFrame 找出有空值的行
這篇文章主要介紹了Python pandas.DataFrame 找出有空值的行,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
Python大數(shù)據(jù)處理之matplotlib.pyplot初步使用
Matplotlib是Python中一個(gè)非常流行的數(shù)據(jù)可視化庫,它提供了豐富的繪圖工具,可以幫助我們輕松創(chuàng)建各種類型的圖表,這篇文章主要介紹了Python大數(shù)據(jù)處理之matplotlib.pyplot初步使用的相關(guān)資料,需要的朋友可以參考下2025-08-08

