初始化Python类中的静态字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初始化Python类中的静态字段相关的知识,希望对你有一定的参考价值。
我想在声明上初始化一个静态字段。
class Test:
def _init_foo(): return 3
foo = { _init_foo() for i in range(10)}
然而,口译员正在抱怨
NameError: name '_init_foo' is not defined
我该如何解决?
答案
为什么这会失败是explained here。
你可以通过foo
定义class 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}
以上是关于初始化Python类中的静态字段的主要内容,如果未能解决你的问题,请参考以下文章