黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

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

系統(tǒng) 2703 0

多態(tài)

多態(tài)指的是一類事物有多種形態(tài)

動物有多種形態(tài):人,狗,豬

          
            import abc
class Animal(metaclass=abc.ABCMeta): #同一類事物:動物
    @abc.abstractmethod
    def talk(self):
        pass

class People(Animal): #動物的形態(tài)之一:人
    def talk(self):
        print('say hello')

class Dog(Animal): #動物的形態(tài)之二:狗
    def talk(self):
        print('say wangwang')

class Pig(Animal): #動物的形態(tài)之三:豬
    def talk(self):
        print('say aoao')
          
        

文件有多種形態(tài):文本文件,可執(zhí)行文件

          
            import abc
class File(metaclass=abc.ABCMeta): #同一類事物:文件
    @abc.abstractmethod
    def click(self):
        pass

class Text(File): #文件的形態(tài)之一:文本文件
    def click(self):
        print('open file')

class ExeFile(File): #文件的形態(tài)之二:可執(zhí)行文件
    def click(self):
        print('execute file')
          
        

多態(tài)性

一 什么是多態(tài)動態(tài)綁定(在繼承的背景下使用時(shí),有時(shí)也稱為多態(tài)性)

多態(tài)性是指在不考慮實(shí)例類型的情況下使用實(shí)例

在面向?qū)ο蠓椒ㄖ幸话闶沁@樣表述多態(tài)性:
向不同的對象發(fā)送同一條消息(?。?!obj.func():是調(diào)用了obj的方法func,又稱為向obj發(fā)送了一條消息func),不同的對象在接收時(shí)會產(chǎn)生不同的行為(即方法)。
也就是說,每個(gè)對象可以用自己的方式去響應(yīng)共同的消息。所謂消息,就是調(diào)用函數(shù),不同的行為就是指不同的實(shí)現(xiàn),即執(zhí)行不同的函數(shù)。

比如:老師.下課鈴響了(),學(xué)生.下課鈴響了(),老師執(zhí)行的是下班操作,學(xué)生執(zhí)行的是放學(xué)操作,雖然二者消息一樣,但是執(zhí)行的效果不同

多態(tài)性

          
            peo=People()
dog=Dog()
pig=Pig()

#peo、dog、pig都是動物,只要是動物肯定有talk方法
#于是我們可以不用考慮它們?nèi)叩木唧w是什么類型,而直接使用
peo.talk()
dog.talk()
pig.talk()

#更進(jìn)一步,我們可以定義一個(gè)統(tǒng)一的接口來使用
def func(obj):
    obj.talk()
          
        

鴨子類型

逗比時(shí)刻:

  Python崇尚鴨子類型,即‘如果看起來像、叫聲像而且走起路來像鴨子,那么它就是鴨子’

python程序員通常根據(jù)這種行為來編寫程序。例如,如果想編寫現(xiàn)有對象的自定義版本,可以繼承該對象

也可以創(chuàng)建一個(gè)外觀和行為像,但與它無任何關(guān)系的全新對象,后者通常用于保存程序組件的松耦合度。

例1:利用標(biāo)準(zhǔn)庫中定義的各種‘與文件類似’的對象,盡管這些對象的工作方式像文件,但他們沒有繼承內(nèi)置文件對象的方法

例2:序列類型有多種形態(tài):字符串,列表,元組,但他們直接沒有直接的繼承關(guān)系

          
            #二者都像鴨子,二者看起來都像文件,因而就可以當(dāng)文件一樣去用
class TxtFile:
    def read(self):
        pass

    def write(self):
        pass

class DiskFile:
    def read(self):
        pass
    def write(self):
        pass
          
        

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發(fā)表我的評論
最新評論 總共0條評論