例項方法在我理解中,只能對物件呼叫,規定例項方法的函式中必須有self
def
movie
(self)
:if self.__age>18:
print
('%s正在看島國愛情片'
%self.__name)
else
:print
('小孩子還是看熊出沒吧'
)
在定義物件之後,將訊息都傳給這個『self』,也就是物件本身,所以說必須是對物件用,而不能對類使用
在這裡可以用乙個例子來說明。
如果我們想計算乙個三角形的面積和周長,但是給你的只有三個數,那麼我們就需要首先判斷這三個數能否構成三角形,因為這時候三角形都沒構成,自然也就沒構成三角形這一物件,所以判斷函式應該使用靜態方法,靜態方法不需要self
from math import sqrt
class
********
(object):
def__init__
(self, a, b, c)
: self._a = a
self._b = b
self._c = c
@staticmethod
defis_valid
(a, b, c)
:return a + b > c and b + c > a and a + c > b
defperimeter
(self)
:return self._a + self._b + self._c
defarea
(self)
: half = self.perimeter()/
2return sqrt(half *
(half - self._a)
*(half - self._b)
*(half - self._c)
)def
main()
: a, b, c =3,
4,5# 靜態方法和類方法都是通過給類發訊息來呼叫的
if ********.is_valid(a, b, c)
: t = ********(a, b, c)
print
(t.perimeter())
# 也可以通過給類發訊息來呼叫物件方法但是要傳入接收訊息的物件作為引數
# print(********.perimeter(t))
print
(t.area())
# print(********.area(t))
else
:print
('無法構成三角形.'
)if __name__ ==
'__main__'
: main(
)
注意靜態方法函式的上面需要@staticmethod
跟他的名字一樣,類方法是直接對類的函式,其實類也可以稱作物件,畢竟萬物皆物件。類方法的函式與例項方法類似,函式的引數中必須有『cls』。在主函式中直接呼叫類名來搞得函式。
from time import time, localtime, sleep
class
clock
(object):
"""數字時鐘"""
def__init__
(self, hour=
0, minute=
0, second=0)
: self._hour = hour
self._minute = minute
self._second = second
@classmethod
defnow
(cls)
: ctime = localtime(time())
return cls(ctime.tm_hour, ctime.tm_min, ctime.tm_sec)
defrun
(self)
:"""走字"""
self._second +=
1if self._second ==60:
self._second =
0 self._minute +=
1if self._minute ==60:
self._minute =
0 self._hour +=
1if self._hour ==24:
self._hour =
0def
show
(self)
:"""顯示時間"""
return
'%02d:%02d:%02d'
% \ (self._hour, self._minute, self._second)
defmain()
:# 通過類方法建立物件並獲取系統時間
clock = clock.now(
)while
true
:print
(clock.show())
sleep(1)
clock.run(
)if __name__ ==
'__main__'
: main(
)
例項方法 靜態方法 類方法
首先新建乙個日期date類,屬性為年,月,日,tomorrow 是例項方法,這個最常見,比較簡單,例項方法的第乙個引數是例項物件self 當我們傳入的年月日是2018 6 4這樣的形式,我們就需要先進行字串處理,在這裡使用了元組的拆包 這是最基本的方式,但是這樣寫會有乙個問題,每次傳參都需要進行字串...
類方法,例項方法,靜態方法
python 中的三種方法,有三種類方法,例項方法,靜態方法,這三種方法都在類中,區別在於呼叫的方式不同。例項物件能的呼叫這三種方法,類只能呼叫類方法和靜態方法。class foo object def init self,name self.name name deford func self 定...
例項方法 類方法 靜態方法
示例方法 第乙個引數為self,必須例項化之後才能呼叫的方法 類方法 使用 classmethod進行裝飾,第乙個引數為cls,可以被類呼叫,也可以被例項呼叫。靜態方法 使用 staticmethod進行裝飾,沒有固定的引數,可以被類呼叫,也可以被例項呼叫,一般可以說跟類和例項沒有關係。classa...