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对象在这里并不特别,所以不会有任何专门的文档指向那里。 :-) –