Python物件導向之靜態方法 靜態方法與類方法

2022-09-20 02:48:16 字數 2566 閱讀 2653

類呼叫函式屬性時,需要先將類例項化,再將例項作為函式屬性傳入;類的例項呼叫函式屬性時需要在後面加括號。

class

building:

def__init__

(self, name, owner, width, length):

self.name =name

self.owner =owner

self.width =width

self.length =length

defa(self):

print('a'

)

defcal_area(self):

return self.length *self.width

b1 = building('

藝術樓', '

藝術學院

', 100, 100)

print

(building.cal_area)

#print

(building.cal_area(b1))

#10000

print

(b1.cal_area())

#10000

類中提供了@property關鍵字,@property可以看成是乙個裝飾器。因此,類的例項可以直接通過點呼叫函式屬性而不需加括號就能執行。此時,該函式屬性就可稱為靜態屬性

class

building:

def__init__

(self, name, owner, width, length):

self.name =name

self.owner =owner

self.width =width

self.length =length

defa(self):

print('a'

) @property

defcal_area(self):

return self.length *self.width

b1 = building('

藝術樓', '

藝術學院

', 100, 100)

print

(building.cal_area)

#print

(b1.cal_area)

#10000

print

(building.cal_area(b1))

#typeerror: 'property' object is not callable

類的方法前加@classmethod,不需要例項化,直接呼叫類的該方法。可以訪問類的資料屬性,但是不可以訪問物件的資料屬性。

class

building:

tag = '

nice

'def

__init__

(self, name, owner, width, length):

self.name =name

self.owner =owner

self.width =width

self.length =length

@classmethod

defis_beauty(cls):

print

(cls)

print('

這個房間很%s

' %(cls.tag))

#print(cls.name) # 不能訪問例項對行的資料屬性,報錯: attributeerror: type object 'building' has no attribute 'name'

b1 = building('

藝術樓', '

藝術學院

', 100, 100)

building.is_beauty()##

這個房間很nice

b1.is_beauty()##

這個房間很nice

類的方法前加@staticmethod,該方法均可被例項和類呼叫,但不能訪問類屬性以及例項屬性,僅僅當做工具包使用。

class

building:

tag = '

nice

'def

__init__

(self, name, owner, width, length):

self.name =name

self.owner =owner

self.width =width

self.length =length

@staticmethod

defis_static_method(a, b, c):

print

(a, b, c)

b1 = building('

藝術樓', '

藝術學院

', 100, 100)

b1.is_static_method(1, 2, 3)

#1 2 3

building.is_static_method(1, 2, 3)

#1 2 3

python物件導向之靜態方法

python的類中有幾個加了裝飾器的特殊方法成員 靜態方法 類方法 屬性方法 在方法頭加上 staticmethod,就是乙個靜態方法。靜態方法只是寫在類裡面的方法,和類沒什麼關係,名義上歸類管理,但不能訪問類或例項中的任何屬性。我們看乙個靜態方法的例子就能理解 class dog object 用...

python物件導向9 靜態方法

靜態方法的本質任然是函式,只是把這個函式進行歸類 在物件導向的思想中,整個過程,就是給物件和方法歸類。當某一函式需要呼叫,但卻只有在某乙個類中才需要用到的時候,我們可以給類定義乙個靜態方法來實現。def plus x,y return x y class car pass print plus 1,...

Python物件導向之方法

任務 給定一段 請修改其中部分 使 可以成功執行。請在下面的begin end之間按照注釋中給出的提示編寫正確的 begin class kls def init self,data self.data data staticmethod defcheckind return ind on defd...