Python你必須了解的一些點 靜態方法 類方法

2021-10-06 16:21:54 字數 2740 閱讀 2801

類方法首先和類屬性一樣,類方法也可以進行更細緻的劃分,具體可分為類方法、例項方法和靜態方法。

和類屬性的分類不同,對於初學者來說,區分這 3 種類方法是非常簡單的,即採用@classmethod修飾的方法為類方法;採用@staticmethod修飾的方法為靜態方法;不用任何修改的方法為例項方法。

靜態方法使用指南

格式:在方法上面新增 @staticmethod

引數:靜態方法可以有引數也可以無引數

應用場景:一般用於和類物件以及例項物件無關的**。

使用方式: 類名.類方法名(或者物件名.類方法名)。

如果我們的類屬性是乙個私有變數,我們就需要定義乙個函式使得在類外可以訪問它。我們希望既可以用類名來訪問,也可以用例項名來訪問,那麼該如何做呢?

class

robot

:# __開頭表示私有變數

__counter =

0def

__init__

(self)

:type

(self)

.__counter +=

1def

show

(self)

:return robot.__counter

if __name__ ==

"__main__"

: x = robot(

)print

("通過例項訪問: "

, x.show())

print

("通過類訪問: "

, robot.show())

# 這樣訪問會報錯

如果我們在定義show這個函式的時候,不寫self引數,那麼可以通過類訪問,不能通過例項訪問,靜態方法就是為了解決這個問題。只需要在定義的函式前新增@staticmethod,這是裝飾器語法。

來看看下面的**,完美解決上面的問題:

class

robot

:# __開頭表示私有變數

__counter =

0def

__init__

(self)

:type

(self)

.__counter +=

1

@staticmethod

defrobotinstances()

:return robot.__counter

if __name__ ==

"__main__"

: x = robot(

)# 下面可以訪問

print

("通過例項訪問: "

, x.robotinstances())

# 下面可以訪問

print

("通過類訪問: "

, robot.robotinstances(

))

類方法使用指南

無需例項化,可以通過類直接呼叫的方法,但是方法的第乙個引數接收的一定是類本身

在方法上面新增@classmethod方法的引數為cls也可以是其他名稱,但是一般預設為clscls指向 類物件

應用場景:使用場景:乙個例項的私有屬性通過「__屬性名」來定義,無法被外部所訪問。但是可以從類的內部進行間接訪問,即通過例項方法來訪問。

使用 可以是 物件名.類方法名。或者是 類名.類方法名

使用類方法不需要定義乙個例項,類方法中的cls指向類,不像例項方法中的self指向乙個例項。定義類方法,需要在函式前新增@classmethod裝飾器。

類方法在繼承當中很有用,在下面的例子中,我們希望在不定義例項的情況下,可以檢視_class_info資訊,此時靜態方法無法起到作用,因為它沒有傳入任何引數,無法識別是哪乙個類。

class

person

:type

='人類'

@classmethod

deftest

(cls)

:print

(cls.

type

)class

pet:

_class_info =

"pet animals"

@classmethod

defabout

(cls)

:print

("this class is about "

+ cls._class_info +

"!")

class

dog(pet)

: _class_info =

"man's best friends"

class

cat(pet)

: _class_info =

"all kinds of cats"

if __name__ ==

"__main__"

: pet.about(

) dog.about(

) cat.about(

) person.test(

)

必須了解的一些IT知識點

有些知識感覺明白卻說不明白,博主把它定義為似懂非懂 趁著假期,趕緊掃盲!矽 半導體 矽谷 區域網 廣域網 網際網路 域域網 門戶 防火牆 頻寬 摩爾定律 安迪比爾定律 反摩爾定律,風險投資 天使投資 時間戳。矽 是一種化學元素,符號是si,有無定形矽和晶體矽兩種同素異形體,在地殼中,是第二豐富的元素...

關於檔案你必須了解的一些基本概念

檔案是計算機檔案,屬於檔案的一種,與普通檔案的載體不同,計算機檔案是以計算機硬碟為載體儲存在計算機上的資訊集合。在程式設計中,我們一般關注的檔案有兩類,即程式檔案和資料檔案。程式檔案 包括源程式 以.c為字尾 和可執行程式 以.exe為字尾 資料檔案 檔案的內容不一定是程式,而是程式執行時讀寫的資料...

Cardview你必須知道的一些屬性

1.首先使用cardview要依賴design包 2.cardview可包裹控制項,文字 等,作為容器 3.cardview屬性有 card view cardelevation 陰影的大小 card view cardmaxelevation 陰影最大高度 card view cardbackgr...