python之 向物件 多型

2021-10-18 11:20:07 字數 3236 閱讀 9326

多型指的是⼀類事物有多種形態,(⼀個抽象類有多個⼦類,因⽽多型的概念依賴於繼承)。

定義:多型是⼀種使⽤物件的⽅式,⼦類重寫⽗類⽅法,調⽤不同⼦類物件的相同⽗類⽅法,可以產⽣不同的執⾏結果

好處:調⽤靈活,有了多型,更容易編寫出通⽤的**,做出通⽤的程式設計,以適應需求的不斷變化!

實現步驟:

class dog(object):

def work(self): # ⽗類提供統⼀的⽅法,哪怕是空⽅法

print('指哪打哪...')

class armydog(dog): # 繼承dog類

def work(self): # ⼦類重寫⽗類同名⽅法

print('追擊敵⼈...')

class drugdog(dog):

def work(self):

print('追查毒品...')

class person(object):

def work_with_dog(self, dog): # 傳⼊不同的物件,執⾏不同的**,即不同的work函式

dog.work()

ad = armydog()

dd = drugdog()

daqiu = person()

daqiu.work_with_dog(ad)

daqiu.work_with_dog(dd)

類屬性就是

類物件

所擁有的屬性,它被

該類的所有例項物件 所共有。

類屬性可以使⽤

類物件

或 例項物件

訪問。

class dog(object):

tooth = 10

wangcai = dog()

xiaohei = dog()

print(dog.tooth) # 10

print(wangcai.tooth) # 10

print(xiaohei.tooth) # 10

類屬性的優點

記錄的某項資料 始終保持⼀致時

,則定義類屬性。

例項屬性

要求 每個物件

為其 單獨開闢⼀份記憶體空間

來記錄資料,⽽

類屬性

為全類所共有,僅佔⽤⼀份記憶體

,更加節省記憶體空間

。 類屬性只能通過類物件修改,不能通過例項物件修改,如果通過例項物件修改類屬性,表示的是建立了⼀個例項屬性。

class dog(object):

tooth = 10

wangcai = dog()

xiaohei = dog()

# 修改類屬性

dog.tooth = 12

print(dog.tooth) # 12

print(wangcai.tooth) # 12

print(xiaohei.tooth) # 12

# 不能通過物件修改屬性,如果這樣操作,實則是建立了⼀個例項屬性

wangcai.tooth = 20

print(dog.tooth) # 12

print(wangcai.tooth) # 20

print(xiaohei.tooth) # 12

class dog(object):

def __init__(self):

self.age = 5

def info_print(self):

print(self.age)

wangcai = dog()

print(wangcai.age) # 5

# print(dog.age) # 報錯:例項屬性不能通過類訪問

wangcai.info_print() # 5

需要⽤裝飾器

@classmethod

來標識其為類⽅法,對於類⽅法,

第⼀個引數必須是類物件

,⼀般以 cls 作為第⼀個引數。

當⽅法中

需要使⽤類物件

(如訪問私有類屬性等

)時,定義類⽅法

類⽅法⼀般和類屬性配合使⽤

class dog(object):

__tooth = 10

@classmethod

def get_tooth(cls):

return cls.__tooth

wangcai = dog()

result = wangcai.get_tooth()

print(result) # 10

需要通過裝飾器

@staticmethod

來進⾏修飾,

靜態⽅法既不需要傳遞類物件也不需要傳遞例項物件(形參沒有self/cls

)。 靜態⽅法 也能夠通過

例項物件

和 類物件

去訪問。

當⽅法中

既不需要使⽤例項物件

(如例項物件,例項屬性),

也不需要使⽤類物件

(如類屬性、類⽅法、建立例項等)

時,定義靜態⽅法

取消不需要的引數傳遞

,有利於

減少不必要的記憶體佔⽤和效能消耗

class dog(object):

@staticmethod

def info_print():

print('這是⼀個狗類,⽤於建立狗例項....')

wangcai = dog()

# 靜態⽅法既可以使⽤物件訪問⼜可以使⽤類訪問

wangcai.info_print()

dog.info_print()

執行結果:

⾯向物件三⼤特性

類屬性

例項屬性

類⽅法

@classmethod

def xx():

**

靜態⽅法

@staticmethod

def xx():

**

Python物件導向 多型

什麼是多型?多型就是一種事物有多種形態,比如說動物,有 貓 狗 老鼠 獅子 大象等。多型的好處 比如我們在新建立類時我們可以繼承動物類,動物類中的方法可以重寫,也可以不重寫,當我們新增時,只是新增乙個animals類而不需要再去修改父類 裡的內容,只需要呼叫就可以了。多型的最基本的實現就是通過繼承來...

python物件導向之封裝 繼承和多型

類似於模板,把事物共有的特徵和行為進行打包,然後建立出來的物件就會具有這些特徵和行為。1.封裝資料的主要原因是 保護隱私 和 隔離複雜度 2.類的結構 class 類名 object 類名的命名規則 大駝峰命名法 每個單詞首字母大寫,單詞之間沒有下劃線 類屬性 屬性名 值 類方法 classmeth...

物件導向多型之介面

介面就是乙個規範,能力 可以實現某乙個功能 語法 public inte ce i.able 成員 介面中的成員不允許新增訪問修飾符,預設就是 public 類中預設是 private 不允許寫具有方法體的函式,不能包含字段 欄位是存資料用的 可以包含自動屬性 介面中只能有方法 方法 屬性 索引器 ...