Python 3.4: 静态方法只能从实例中调用吗?

Python 3.4 : can static methods only be called from an instance?

我正在尝试从 class 中调用 @staticmethod 方法来初始化 class 变量,如下所示:

class Test:
    @staticmethod
   def get_bit_count():
       return 8
   num = get_bit_count()

但这会立即引发以下错误:TypeError: 'staticmethod' object is not callable.

但是,下面的代码工作得很好:

class Test:
    @staticmethod
    def get_bit_count():
        return 8
    num = None
    def __init__(self):
        self.num = self.get_bit_count()

print(Test.get_bit_count())
print(Test().num)

可以调用该方法并使用以下输出正确设置变量 num

8
8

但是使用该代码,我现在需要实例化 class 来执行此操作。

有没有办法让我在不实例化 class 的情况下使用 Test.num 并获得 8 而不是 None ?我希望这样做是为了避免冗余,方法 get_bit_count() 中只有一个变量可以在我希望更新代码时进行更改。

静态方法,如 staticmethod 的文档中所述,只能在 class 或实例上调用。

不过,您可以使用常规方法。如果你也想在一个实例上调用它,只需让它接受任意数量的参数:

class Test:
    def get_bit_count(*args, **kwargs):
        return 8

    num = get_bit_count()


print(Test.num)
# 8

t = Test()
print(t.get_bit_count())
# 8