我对静态方法和类方法越来越熟悉,我知道它们之间的区别。但今天我遇到了一个问题,我想在一个方法中引用
这个例子是哲学的一个过度简化版本。我想在获得数据后,比如从串行设备中获取数据,对其进行清洗或解析处理。有没有办法像这样实现ask方法?
self
和cls
。唯一我知道如何做到这一点的方法是创建一个普通的类方法(没有使用@classmethod
),然后显式地使用类名调用它: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
装饰器是必须的吗?