使用 class 名称访问静态变量

Use class name to access static variables

是否可以在不显式使用 class 名称的情况下访问 class 变量,以防我以后决定更改 class 的名称?

像这样

static_variable = 'stuff'

className = CLASS

def method (self):
    className.static_variable

这是否可以通过简单的方式实现?

回答

self.static_variable __class__.static_variable

别忘了看评论。


对于正在寻找此问题答案的任何人,暂时忽略混合静态变量和实例变量是否是个好主意。

有两种简单的方法可以解决这个问题。

第一种方式

class MyClass():
    static_variable = 'VARIABLE'

    def __init__(self):
        self.instanceVariable = 'test'

    def access_static(self):
        print(__class__.static_variable)

第二种方式

class MyClass():
    static_variable = 'VARIABLE'

    def __init__(self):
        self.instanceVariable = 'test'

    def access_static(self):
        print(self.static_variable)

可以使用 class.static_variable 或使用 self.static_variable 只要在代码的某处没有为 self.static_variable 定义实例变量。

不过,使用 self 会使您不清楚访问的是静态变量还是实例变量,因此我首选的做法是简单地在前面添加 static_variableclass 而不是 ClassName.static_variable