首页 > 解决方案 > 在类上动态设置属性

问题描述

类属性可以动态设置吗?

像这样的东西:

class MyConstants:

    GLOBAL_VAR = 'actual_attr_name'

class MyStrings:

    setattr(cls, MyConstants.GLOBAL_VAR, None)

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

NameError:名称“cls”未定义

标签: pythonpython-3.x

解决方案


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

使用本地人:

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

但以上内容并不能真正保证有效。

所以最好可能是使用:

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

推荐阅读