2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

三十五、Python面向?qū)ο螅毫钅恪俺泽@”的多態(tài)

 乙甲壬 2020-07-11
三十五、Python面向?qū)ο螅毫钅恪俺泽@”的多態(tài)

python面向?qū)ο笾鄳B(tài)

1.什么是Python中的多態(tài)

在Python中,由于在定義變量時沒有指定類型,類似弱類型語言,而對于弱類型的語言來說,在定義變量時并沒有聲明變量的類型,因此同一個變量可以在不同的地方引用不同的對象,因此,同一個變量在引用不同對象時在調(diào)用同一個方法時,可以呈現(xiàn)出不同的行為,具體呈現(xiàn)出哪一種行為完全由變量所引用的對象所決定,這就是多態(tài)。也是面向?qū)ο缶幊痰娜筇卣髦弧?/p>

2.Python中讓你吃驚的多態(tài)?

在講解Python中的多態(tài)時,好多人都會覺得不可思議,原來自己一直在使用多態(tài),而自己卻毫無察覺,下面來看一個例子:

class Cat: def say(self): print(f'我是喵星人, 我只喜歡喵喵叫')class Dog: def say(self): print(f'我是汪星人, 我喜歡汪汪照叫')# 定義變量x為Cat的實例x = Cat()# 調(diào)用x的say()方法x.say() # 我是喵星人, 我只喜歡喵喵叫# 將Dog()的實例的地址賦值給xx = Dog()# 調(diào)用x的say()方法x.say() # 我是汪星人, 我喜歡汪汪照叫

從上面的代碼示例可知,同一個變量x在執(zhí)行同一個方法say()時,由于在不同時間x指向的對象不同,因此呈現(xiàn)出了不同的行為,這就是多態(tài),是不是看起來非常不可思議,也許你會感到非常失望,這種多態(tài)有什么用??? 事實上,在Python中,多態(tài)是一種非常靈活的編程機制,下面來看另外一個例子。

3.Python中多態(tài)的“真正”用途

假如我有一個工廠來生產(chǎn)各種手機配件的,比如有充電寶、耳機、手機支架、手機膜等。

  • 先定義一個工廠類
class Factory:    def __init__(self, name):        self.name = name    def make_accessory(self, accessory):        print(f'開始生產(chǎn)配件:{accessory.name}')        accessory.produce(self)    def __str__(self):        return f'{self.name}'
  • 定義配件類
class PowerBank: def __init__(self, name): self.name=name def produce(self,factory): print(f'在 {factory} 生產(chǎn)充電寶')class HeadPhone: def __init__(self, name): self.name=name def produce(self,factory): print(f'在 {factory} 生產(chǎn)耳機')class ScreenProtector: def __init__(self, name): self.name=name def produce(self,factory): print(f'在 {factory} 生產(chǎn)手機膜')# 實例化工廠factory = Factory('華強北手機配置生產(chǎn)廠')factory.make_accessory(PowerBank('華為充電寶'))factory.make_accessory(HeadPhone('Oppo充電藍牙耳機'))factory.make_accessory(HeadPhone('手機膜'))
三十五、Python面向?qū)ο螅毫钅恪俺泽@”的多態(tài)

結(jié)果

從上面的例子可以體會到Python的多態(tài)的優(yōu)勢,這種通過參數(shù)的動態(tài)引用來調(diào)用引用后的對象中的方法非常靈活,動態(tài)改變后傳入的對象只要具有指定的方法就行,至于該方法體現(xiàn)什么樣的行為,則完全取決于傳入對象本身。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約