在类上动态设置属性

时间:2021-03-19 15:09:46

标签: python python-3.x

类属性可以动态设置吗?

像这样:

class MyConstants:

    GLOBAL_VAR = 'actual_attr_name'

class MyStrings:

    setattr(cls, MyConstants.GLOBAL_VAR, None)

我希望自动设置一些类属性,我不知道/不想对其名称进行硬编码......而是从另一个类中获取它们。上面的剪切返回

<块引用>

NameError: name 'cls' 未定义

1 个答案:

答案 0 :(得分:3)

有两种方法可以做到这一点:

使用本地人:

>>> class Foo:
...     locals()['dynamic_value'] = 42
...
>>> Foo.dynamic_value
42

但不能保证上述方法确实有效。

所以最好使用:

>>> class Foo:
...     pass
...
>>> setattr(Foo, 'dynamic_value', 42)
>>> Foo.dynamic_value
42