class VectorOp(object):
"""
實作向量計算操作
"""
@staticmethod # 不強制要求參數,
def dot(x, y):
直接上代碼呢,我們閱讀代碼時,有時候會出現 @staticmethod ,那有什麼用呢。當我們調用一個類的時候,我們必須初始化一個類,才能調用裡面的方法。這樣會很麻煩。
@staticmethod的優勢:在不初始化一個對象的前提下,就可以調用其方法。
我們看下面的兩個例子:
eg1.py
class Mathematics:
@staticmethod
def addNumbers(x, y):
return x + y
# create addNumbers static method
Mathematics.addNumbers = staticmethod(Mathematics.addNumbers)
print('The sum is:', Mathematics.addNumbers(5, 10))
輸出為:('The sum is:', 15)
eg2.py
class Dates:
def __init__(self, date):
self.date = date
def getDate(self):
return self.date
@staticmethod
def toDashDate(date):
return date.replace("/", "-")
date = Dates("15-12-2016")
dateFromDB = "15/12/2016"
dateWithDash = Dates.toDashDate(dateFromDB)
if(date.getDate() == dateWithDash):
print("Equal")
else:
print("Unequal")
運作結果:
Equal
重點是: 我們什麼時候可以用@staticmethod:
第一:Grouping utility function to a class
第二:Having a single implementation
轉載:https://www.programiz.com/python-programming/methods/built-in/staticmethod