乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      三十五、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)是一種非常靈活的編程機(jī)制,下面來看另外一個例子。

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

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

      • 先定義一個工廠類
      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ī)膜')# 實例化工廠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é)果

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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約