类属性可以动态设置吗?
像这样:
class MyConstants:
GLOBAL_VAR = 'actual_attr_name'
class MyStrings:
setattr(cls, MyConstants.GLOBAL_VAR, None)
我希望自动设置一些类属性,我不知道/不想对其名称进行硬编码......而是从另一个类中获取它们。上面的剪切返回
<块引用>NameError: name 'cls' 未定义
答案 0 :(得分:3)
有两种方法可以做到这一点:
使用本地人:
>>> class Foo:
... locals()['dynamic_value'] = 42
...
>>> Foo.dynamic_value
42
但不能保证上述方法确实有效。
所以最好使用:
>>> class Foo:
... pass
...
>>> setattr(Foo, 'dynamic_value', 42)
>>> Foo.dynamic_value
42