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

标签 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”的方式。

最佳答案

您可以创建一个类方法。

@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/

相关文章:

python - 在 python 中这是一个好习惯吗?功能快捷方式?

python - 我应该如何 JSON 序列化 Enum-children?

java - 有什么办法可以将这段代码分成3个不同的类吗?

java - Java 线程安全适用于类的所有实例还是仅适用于共享实例?

c++ - 抽象类和静态方法

python - 如何从(任意)连续概率分布进行模拟?

python - 在池多处理中写入文件 (Python 2.7)

c++ - 类定义中的段错误无法找出位置

java - 在运行时将多个 Java 类与 ASM 组合

static - C++/CLI - 从特定命名空间引用静态方法的语法