類呼叫函式屬性時,需要先將類例項化,再將例項作為函式屬性傳入;類的例項呼叫函式屬性時需要在後面加括號。
classbuilding:
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)
(building.cal_area)
(building.cal_area(b1))
#10000
(b1.cal_area())
#10000
類中提供了@property關鍵字,@property可以看成是乙個裝飾器。因此,類的例項可以直接通過點呼叫函式屬性而不需加括號就能執行。此時,該函式屬性就可稱為靜態屬性
classbuilding:
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)
(building.cal_area)
(b1.cal_area)
#10000
(building.cal_area(b1))
#typeerror: 'property' object is not callable
類的方法前加@classmethod
,不需要例項化,直接呼叫類的該方法。可以訪問類的資料屬性,但是不可以訪問物件的資料屬性。
classbuilding:
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):
(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
,該方法均可被例項和類呼叫,但不能訪問類屬性以及例項屬性,僅僅當做工具包使用。
classbuilding:
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):
(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...