Python多型和類屬性

2021-10-09 01:27:04 字數 2079 閱讀 2479

多型指的是一類事物有多種形態。

定義:多型是一種使用物件的方式,子類重寫父類方法,呼叫不同子類物件的相同父類方法,可以產生不同的執行結果。

class

dog:

defwork

(self)

:pass

class

armydog

(dog)

:def

work

(self)

:print

("追擊敵人。。。"

)class

drugdog

(dog)

:def

work

(self)

:print

("追擊毒品。。。"

)class

person

:def

work_with_dog

(self, dog)

: dog.work(

)ad = armydog(

)dd = drugdog(

)da = person(

)da.work_with_dog(ad)

da.work_with_dog(dd)

class

dog:

tooth =

100xiaohei = dog(

)print

(dog.tooth)

print

(xiaohei.tooth)

類屬性的優點:

記錄的某項資料 始終保持一致時,則 定義類屬性

例項屬性 要求 每個物件 為其 單獨開闢乙份記憶體空間 來記錄資料,而類屬性 為全類所共有,僅占用乙份記憶體,更加節省記憶體空間。

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

class

dog:

tooth =

100dog.tooth =

5220

xiaohei = dog(

)xiaohei.tooth =

250print

(dog.tooth)

# 5220

print

(xiaohei.tooth)

# 250

類方法中 需要使用類物件(如訪問私有類屬性等)時,定義類方法。

類方法一般和類屬性配合使用。

class

dog:

__tooth =

10 @classmethod

defget_tooth

(cls)

:return cls.__tooth

dog = dog(

)print

(dog.get_tooth())

# 10

print

(dog.get_tooth())

# 10

需要通過裝飾器 @staticmethod 來進行修飾,靜態方法既不需要傳遞類物件也不需要傳遞例項物件(形參沒有self/cls)靜態方法 也能通過例項物件類物件去訪問

當方法中既不需要使用例項物件(如:例項物件,例項屬性),也不需要使用類物件(如類屬性、類方法、建立例項等)時,定義靜態方法。

取消不需要的引數傳遞,有利於減少不必要的記憶體占用和效能消耗

class

dog:

@staticmethod

definfo_print()

:print

("這是乙個靜態方法"

)dog = dog(

)print

(dog.info_print())

print

(dog.info_print(

))

python 類屬性 用處 Python類屬性詳解

類屬性1.類定義後就存在,而且不需要例項化 2.類屬性使得相同類的不同例項共同持有相同變數 類屬性例項 attrb.py class testcss cssa class attribe def init self self.a 0 self.b 10 def info self print a s...

Python 類屬性和例項屬性

一 簡述二者區別 對類屬性的修改可被儲存在類中 單例模式就是基於類屬性的這種特性 修改後的屬性能夠被子類繼承 例項屬性的修改只對該例項有效,不會對其他例項和其對應類的子類例項造成影響 二 來看下例子 類屬性 class a object a 1 pass print a.a 檢視a類的屬性a,結果為...

python 例項屬性和類屬性

如何在乙個類中定義一些常量,每個物件都可以方便訪問這些常量而不用重新構造?第乙個問題,在 python 的類裡,你只需要和函式並列地宣告並賦值,就可以實現這一點,例如這段 中的 welcome str。一種很常規的做法,是用全大寫來表示常量,因此我們可以在類中使用 self.welcome str ...