python如何使用多态_在python 3中,如何将多态应用于类
介紹
多態性是為不同的基礎形式(例如,數據類型或類)利用同一接口的能力。這允許函數在不同時間使用不同類型的實體。
對于Python中的面向對象編程,這意味著可以用與屬于特定類的特定對象相同的方式來使用它,就好像它是屬于不同類的不同對象一樣。
多態性提供了靈活性和松散的耦合,因此可以隨時間擴展代碼,并且輕松維護它們。
本教程將介紹如何將多態應用于Python中的類。
創建多態類
為了使用多態性,我們創建兩個不同的類,用于兩個不同的對象,每一個不同的類都需要有一個共同的接口,這樣它們就可以被多態地使用,所以,我們為它們提供不同但有相同名稱的方法。
我們創建一個Shark類和Clownfish類,每個類都將定義swim(),swim_backwards()和skeleton()的方法。polymorphic_fish.pyclass Shark():
def swim(self):
print("The shark is swimming.")
def swim_backwards(self):
print("The shark cannot swim backwards, but can sink backwards.")
def skeleton(self):
print("The shark's skeleton is made of cartilage.")
class Clownfish():
def swim(self):
print("The clownfish is swimming.")
def swim_backwards(self):
print("The clownfish can swim backwards.")
def skeleton(self):
print("The clownfish's skeleton is made of bone.")
上面的代碼中,Shark和Clownfish類都有三個相同名稱相同的方法,但是,這些方法的每個功能對于每個類都不同。
讓我們將這些類實例化為兩個對象:polymorphic_fish.py...
sammy = Shark()
sammy.skeleton()
casey = Clownfish()
casey.skeleton()
當使用python polymorphic_fish.py命令運行程序時,我們可以看到每個對象都按照預期的方式運行:OutputThe shark's skeleton is made of cartilage.
The clownfish's skeleton is made of bone.
現在,我們有兩個使用通用接口的對象,無論它們的類型如何,我們都可以以相同的方式使用這兩個對象。
多態性與類方法
為了展示Python如何以相同的方式使用這些不同的類類型,我們首先可以創建一個遍歷對象元組的for循環。然后我們可以調用這些方法,而不用關心每個對象是什么類型的,我們僅假設這些方法實際上存在于每個類中。polymorphic_fish.py...
sammy = Shark()
casey = Clownfish()
for fish in (sammy, casey):
fish.swim()
fish.swim_backwards()
fish.skeleton()
我們有兩個對象,Shark類的sammy和Clownfish類的casey ,我們的for循環迭代這些對象,在每個對象上調用swim(),swim_backwards()和skeleton()方法。
運行程序時,輸出將如下所示:OutputThe shark is swimming.
The shark cannot swim backwards, but can sink backwards.
The shark's skeleton is made of cartilage.
The clownfish is swimming.
The clownfish can swim backwards.
The clownfish's skeleton is made of bone.
for循環首先通過Shark類的sammy實例化,然后是Clownfish類的casey對象,先看到與Shark類相關的方法。
這表明python在不知道或關心每個對象的類類型的情況下使用了這些方法,也就是說,以多態方式使用了這些方法。
函數的多態性
我們還可以創建一個可以接受對象的函數,從而實現多態。
我們創建一個叫in_the_pacific()的函數,它接受一個我們可以調用fish的對象,使用的是名稱fish,實例化的對象都可以被調用到這個函數中:polymorphic_fish.py...
def in_the_pacific(fish):
接下來,我們給函數一些使用我們傳遞給它的fish對象的函數,在這種情況下,我們調用swim()方法,其中每個方法都在兩個類Shark和Clownfish中定義:polymorphic_fish.py...
def in_the_pacific(fish):
fish.swim()
接下來,如果沒有它們,我們創建Shark和Clownfish類的實例化,使用這些函數,我們可以使用相同的in_the_pacific()函數調用它們的操作:polymorphic_fish.py...
def in_the_pacific(fish):
fish.swim()
sammy = Shark()
casey = Clownfish()
in_the_pacific(sammy)
in_the_pacific(casey)
運行程序時,輸出將如下所示:OutputThe shark is swimming.
The clownfish is swimming.
盡管我們在定義時將隨機對象(fish )傳遞給in_the_pacific()函數,但是仍然能夠有效地實例化Shark和Clownfish類,casey對象調用Clownfish類中的swim()方法,而sammy對象調用在Shark類中定義的swim()方法。
結束語
通過允許不同的對象通過多態的方式使用函數和方法,利用這個Python功能可為你的面向對象的代碼提供更大的靈活性和可擴展性。
總結
以上是生活随笔為你收集整理的python如何使用多态_在python 3中,如何将多态应用于类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 理想汽车CEO曾试图接触威马沈晖?本人回
- 下一篇: 曝华为P60有花招:双画幅大底主摄+最大