2
我越來越熟悉靜態方法和類方法,我知道它們之間的區別。但我今天遇到了一個問題,我希望在方法中引用self
和cls
。使用類名調用靜態方法 - 好還是壞?
我知道如何做到這一點的唯一方法是使一個普通的類方法(不與@classmethod
,但簡單地用def
),並調用類與它的名稱明確地像這樣:
class myClass:
def __init__():
self._ser.connect('COM5')
def ask(self, message: str) -> str:
return myClass.clean_output(self._ser.query(message))
@staticmethod
def clean_output(dirty_string: str):
clean_string = dirty_string.strip().replace(chr(4))
return clean_string
這個例子是哲學的過度簡化版本。我想對我回來的數據調用一個乾淨的或解析函數,就像從串口設備那樣。有什麼辦法來實現ASK方法,像這樣?:
def ask(self, message: str) -> str:
return cls.clean_output(self._ser.query(message))
還是確定的是我與myClass
明確地這樣叫呢?如果是,程序員何時應該使用@classmethod
以及何時允許使用類名本身?當您期望子類化發生時,是否只使用@classmethod
修飾器?
啊geez ...太簡單了。感謝它,但。這些信息是在哪裏發佈的?我看了,但也許我沒有問谷歌正確的問題。這是完全有道理的,實例也會有類方法。衛生署! – boymeetscode
@boymeetscode:我添加了他們爲什麼可用; staticmethod對象在這裏並不特別,所以不會有任何專門的文檔指向那裏。 :-) –