我遇到了这样一种情况,我从另一个静态方法调用一个类的静态方法。可以肯定的是,我不会问 X-Y 问题,我只是想提供一些背景知识。
我有一个类,它包含一个数据容器和几种在容器内转换数据的方法。因为我还希望转换器可以在没有类实例的情况下从外部调用,所以我选择静态方法:
class SomeClass(object):
def __init__(self,some_data):
self.data = some_data
@staticmethod
def convert_1(data_item):
return 1+data_item
@staticmethod
def convert_2(data_item):
return 2*data_item
现在我可以执行 SomeClass.convert_1(data_item)
而无需创建 SomeClass
的实例。
比方说,我想在 SomeClass
中有一个方法,它连续执行两个转换,并且还想将该方法作为静态方法。
我可以吗
@staticmethod
def combined_convert(data_item):
data_item = SomeClass.convert_1(data_item)
data_item = SomeClass.convert_2(data_item)
return data_item
在 SomeClass
中?这感觉不对,因为我在其自己的定义中调用该类,但我想不出另一种“更 Pythonic”的方式。
最佳答案
您可以创建一个类方法。
@classmethod
def combined_convert(cls,data_item):
data_item = cls.convert_1(data_item)
data_item = cls.convert_2(data_item)
return data_item
关于python - 在python中的类中调用静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46365803/