首页 > 解决方案 > 在 Python 类中初始化静态字段

问题描述

我想在声明时初始化一个静态字段。

class Test:

    def _init_foo(): return 3

    foo = { _init_foo() for i in range(10)}

然而,翻译抱怨

NameError: name '_init_foo' is not defined

我该如何解决?

标签: pythonclassstatic

解决方案


这里解释了为什么失败。

foo您可以通过类 decorator定义来解决该问题。这是有效的,因为在add_foo调用时,该类已被定义,_init_foo然后可以通过以下方式访问cls._init_foo

def add_foo(cls):
    cls.foo = { cls._init_foo() for i in range(10) }
    return cls

@add_foo
class Test:

    def _init_foo(): return 3


print(Test.foo)
# {3}

推荐阅读