91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

面向對象-多態

發布時間:2020-10-15 17:25:57 來源:網絡 閱讀:268 作者:DevOperater 欄目:編程語言

1.多態

"多態指的是一類事物有多種形態,比如:動物有貓,狗,豬"
import abc
class Animal(metaclass=abc.ABCMeta): #同一類事物:動物
    @abc.abstractmethod
    def talk(self):
        pass

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

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

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

"文件有多種形態:文本文件,可執行文件"
import abc
class File(metaclass=abc.ABCMeta): #同一類事物:文件
    @abc.abstractmethod
    def click(self):
        pass

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

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

2.多態性

"多態性好處
1.增加了程序的靈活性:以不變應萬變,不論對象怎樣變,使用者都是相同的方式去調用,如func(animal)
2.增加了程序的可擴展性:通過繼承animal類創建新的類,使用者無需修改自己的代碼,還是用func(animal)去調用"

>>> class Cat(Animal): #屬于動物的另外一種形態:貓
...     def talk(self):
...         print('say miao')
... 
>>> def func(animal): #對于使用者來說,自己的代碼根本無需改動
...     animal.talk()
... 
>>> cat1=Cat() #實例出一只貓
>>> func(cat1) #甚至連調用方式也無需改變,就能調用貓的talk功能
say miao

'''
這樣我們新增了一個形態Cat,由Cat類產生的實例cat1,使用者可以在完全不需要修改自己代碼的情況下。使用和人、狗、豬一樣的方式調用cat1的talk方法,即func(cat1)
'''

3.鴨子類型

python崇尚鴨子類型,即'如果看起來像,叫聲像而且走起路來像鴨子,那么它就是鴨子'
python程序員通常根據這種行為來編寫程序
"例1:利用標準庫中定義的各種‘與文件類似’的對象,盡管這些對象的工作方式像文件,但他們沒有繼承內置文件對象的方法"
#二者都像鴨子,二者看起來都像文件,因而就可以當文件一樣去用
class TxtFile:
    def read(self):
        pass

    def write(self):
        pass

class DiskFile:
    def read(self):
        pass
    def write(self):
        pass
"例2:序列類型有多種形態:字符串,列表,元組,但他們沒有直接的繼承關系"
#str,list,tuple都是序列類型
s=str('hello')
l=list([1,2,3])
t=tuple((4,5,6))

#我們可以在不考慮三者類型的前提下使用s,l,t
s.__len__()
l.__len__()
t.__len__()

len(s)
len(l)
len(t)
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

田阳县| 莆田市| 荣成市| 中卫市| 洛阳市| 田东县| 邛崃市| 沙坪坝区| 尼木县| 盐边县| 古田县| 土默特右旗| 中阳县| 中江县| 奈曼旗| 镇安县| 洛宁县| 苏尼特左旗| 蛟河市| 曲松县| 安徽省| 凤阳县| 响水县| 靖安县| 宾阳县| 卢龙县| 石城县| 乐安县| 揭西县| 河源市| 贵港市| 龙州县| 崇仁县| 中牟县| 阿鲁科尔沁旗| 拉萨市| 临夏市| 岚皋县| 项城市| 江源县| 红河县|