我遇到了一种情况,我从另一个静态方法中调用一个类的静态方法。可以肯定的是,我不提出一个X-Y问题,我试图给出一些背景知识。在python中调用类中的静态方法
我有一个类,它包含一个数据容器和几个方法来转换容器内的数据。正如我也想转换器从没有一个类的实例外调用,我选择静态方法:
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”的方式。
该类是由您执行'combined_convert'时所定义的,因此没有问题。 – thebjorn
您可以始终使用方法引用类的*实例*(使用'self');为什么要引用这个类是一个问题?它只是'class'语句中的顶级代码,不能引用正在构建的类。 – chepner
您是否尝试过在模块中使用顶级函数?看起来你正在尝试使用classespacing – Felk