類物件 類屬性 類方法 靜態方法

2021-10-23 10:52:00 字數 2773 閱讀 9971

我們在前面講的類定義格式中,「class類名:」。實際上,當直譯器執行class語句時,就會建立乙個類物件。

#測試類物件的生成

class

student

:pass

print

(type

(student)

)print(id

(student)

)stu2 = student

s1 = stu2

print

(s1)

執行結果

<

class

'type'

>

1778915500424

<

class

'__main__.student'

>

可以看到實際上生成了乙個變數名就是類名「student」的物件。我們通過賦值給新變數stu2,也能實現相關的呼叫。說明,確實建立了「類物件」。

類屬性是從屬於「類物件」的屬性,也稱為「類變數」。由於,類屬性從屬於類物件,可以被所有例項物件共享。

類屬性的定義方式:

class 類名:

類變數名 = 初始值

在類中或者類的外面,我們可以通過:「類名.類變數名」來讀寫。

class

student

: company =

"sxt"

# 類屬性

count =

0# 類屬性

def__init__

(self, name, score)

: self.name = name # 例項屬性

self.score = score

student.count = student.count +

1def

say_score

(self)

:# 例項方法

print

("我的公司是:"

, student.company)

print

(self.name,

'的分數是:'

, self.score)

s1 = student(

'張三',80

)# s1是例項物件,自動呼叫__init__()方法

s1.say_score(

)s2 = student(

"高淇",60

)s3 = student(

"高小希"

,100

)print

('一共建立個student物件'

.format

(student.count)

)

執行結果

我的公司是: sxt

張三 的分數是: 80

一共建立3個student物件

類方法時從屬於「類物件」的方法。類方法通過裝飾器@classmethod來定義,格式如下:

@classmethod

def 類方法名(cls [,形參列表]) :

函式體要點如下:

1.@clsssmetod必須位於方法上面一行

2.對於給cls必須有;cls指的就是「類物件」本身;

3.呼叫類方法格式:「類名.類方法名(引數列表)"。引數列表中,不需要也不能給cls傳值。

4.類方法中訪問例項屬性和例項方法會導致錯誤

5.子類繼承父類方法時,傳入cls所示子類物件,而非父類物件

#類方法使用測試

class

student

: company =

"尚學堂"

# 類屬性

@classmethod

defprintcompany

(cls)

:print(id

(cls)

)print

(cls.company)

student.printcompany(

)print(id

(student)

)

執行結果

1738598859304

尚學堂1738598859304

python中允許定義與「類物件」無關的方法,稱為「靜態方法」。

「靜態方法」和在模組中定義普通函式沒有區別,只不過「靜態方法」放到了「類的名字空間裡面」,需要通過「類呼叫」。

靜態方法通過裝飾器@staticmethod來定義,格式如下:

@staticmethod

def 靜態方法名([形參列表]) :

函式體要點如下:

1.@staticmethod必須位於方法上面一行

2.呼叫靜態方法格式:「類名.靜態方法名(引數列表)」。

3.靜態方法中訪問例項屬性和例項方法會導致錯誤

class

student

: company =

"***"

@staticmethod

defadd

(a,b)

:print

("+="

.format

(a,b,

(a+b)))

return a+b

student.add(20,

30)

執行結果

20+30

=50

類屬性,類方法和靜態方法

類屬性 針對類物件定義的屬性 使用賦值語句在class關鍵字下可以定義類屬性 類方法 針對類物件定義的方法 在類方法內部可以直接訪問類屬性或者呼叫其他的類方法 class toy object 使用賦值語句 記錄所有的玩具數量 count 0 def init self,name self.name...

Python 類屬性 類方法 靜態方法

一.類屬性 1.參考 一 參考 二 說明 1.類屬性可以使用類物件或例項物件訪問 2.可以通過類物件來修改類屬性,但是不可以通過例項物件來修改類屬性。class house 類屬性 price high 通過類物件獲取類屬性值 print house.price 通過例項物件獲取類屬性值 h hou...

類屬性和類方法與靜態方法

class dog def init self,name self.name name staticmethod 方法中既不需要 類屬性 也不需要例項屬性的時候 用靜態方法 好處是節省記憶體 defmethod print 靜態方法 classmethod 自定義類的方法和屬性時用 作用是 直譯器可...