python - 在 Python 类中初始化静态字段
问题描述
我想在声明时初始化一个静态字段。
class Test:
def _init_foo(): return 3
foo = { _init_foo() for i in range(10)}
然而,翻译抱怨
NameError: name '_init_foo' is not defined
我该如何解决?
解决方案
这里解释了为什么失败。
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}
推荐阅读
- mysql - 如何比较子选择的计数?
- c++ - 使用 OpenCV for IOS 的项目存档中的 Xcode Mach-O 错误
- android - OS 8.x 以上的 Chromebook 设备 AVD 不可用
- reactjs - 单击自定义弹出通知中的允许后如何显示默认浏览器弹出通知?
- python - Python:执行命令行时隐藏控制台
- google-cloud-platform - 谷歌云身份验证错误。用户名与 json 不匹配
- r - 如何为 R 中的密度分布建模负值?
- laravel - Laravel 获取从表单请求内爆的值数组
- android - 从另一个片段到达时对顶级目的地进行不同的处理
- python - 输入类型不支持 ufunc 'true_divide',并且输入无法安全地强制转换为任何支持的类型错误