小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

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

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

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

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

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

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

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

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

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

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

  • 先定義一個(gè)工廠類
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)耳機(jī)')class ScreenProtector: def __init__(self, name): self.name=name def produce(self,factory): print(f'在 {factory} 生產(chǎn)手機(jī)膜')# 實(shí)例化工廠factory = Factory('華強(qiáng)北手機(jī)配置生產(chǎn)廠')factory.make_accessory(PowerBank('華為充電寶'))factory.make_accessory(HeadPhone('Oppo充電藍(lán)牙耳機(jī)'))factory.make_accessory(HeadPhone('手機(jī)膜'))
三十五、Python面向?qū)ο螅毫钅恪俺泽@”的多態(tài)

結(jié)果

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約