如何在 Python 中引用静态 class 变量?

How do I refer to static class variable in Python?

我有一个'static'class

class A:
    a = 1

    @staticmethod
    def doStuff():
        foo(A.a)

现在我需要一个派生的class

class B(A):
    a = 2

基本上可以

    @staticmethod
    def doStuff():
        foo(B.a)

如果 A 不是伪静态 class,我可以从 A 派生 B 并且

foo(self.a)

会做我想做的事。有没有办法避免将 doStuff() 复制到 class B 并将 foo(A.a) 替换为 foo(B.a)?以 'self' 方式引用 class 并使 class A s doStuff 看起来像

def doStuff():
    foo(class_self.a)

?

我假设您在代码中指的是 class 而不是 def

答案不是使用静态方法,而是类方法。这将完全按照您的意愿行事。

class A:
    a = 1

    @classmethod
    def doStuff(cls):
        foo(cls.a)

class B(A):
    a = 2