在python中调用类中的静态方法

时间:2017-09-22 13:20:01

标签: python class static-methods

我遇到了一种情况,我从另一个静态方法调用类的静态方法。可以肯定的是,我不会问一个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'方式。

1 个答案:

答案 0 :(得分:1)

您可以创建一个类方法。

@classmethod
def combined_convert(cls,data_item):
    data_item = cls.convert_1(data_item)
    data_item = cls.convert_2(data_item)
    return data_item