運用staticmethod裝飾器的簡單方式

2021-09-29 19:30:46 字數 2098 閱讀 9254

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(

)

輸出:

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(

)

python中staticmethod裝飾器的作用

python中的staticmethod裝飾器 decorator 主要是方便將外部函式整合到類體中,美化 結構,重點在可以不需要類例項化的情況下呼叫方法 如果去掉staticmethod,在方法中加self也可以通過例項化訪問方法也是可以整合 1.不使用staticmethod的 如何寫的 ind...

self,cls和 staticmethod的區別

self instancemethod 1 instance method 就是例項物件與函式的結合。2 使用類呼叫,第乙個引數明確的傳遞過去乙個例項。3 使用例項呼叫,呼叫的例項被作為第乙個引數被隱含的傳遞過去。簡單來說,就是帶了self這個引數的函式,如果想要呼叫的話必須先建立乙個類的例項,因為...

關於staticmethod 函式

說實話,我就不知這個是幹什麼的.菜鳥教程寫的無需例項化,自己可以呼叫自己.在同乙個類麵我使用到了 因為乙個類了,我可能會方法間互相呼叫.類中間使用.不加這個,就會報錯.無法識別這個 origin items.說到這裡,我還得得給 加個高亮.法克j staticmethodclass baixi st...