python - 在类上动态设置属性
问题描述
类属性可以动态设置吗?
像这样的东西:
class MyConstants:
GLOBAL_VAR = 'actual_attr_name'
class MyStrings:
setattr(cls, MyConstants.GLOBAL_VAR, None)
我希望自动设置一些类属性,我不知道/想要硬编码它们的名称......而不是从另一个类中获取它们。上面的剪辑返回
NameError:名称“cls”未定义
解决方案
有两种方法可以做到这一点:
使用本地人:
>>> class Foo:
... locals()['dynamic_value'] = 42
...
>>> Foo.dynamic_value
42
但以上内容并不能真正保证有效。
所以最好可能是使用:
>>> class Foo:
... pass
...
>>> setattr(Foo, 'dynamic_value', 42)
>>> Foo.dynamic_value
42
推荐阅读
- sql - 代码没有给出任何结果并且没有语法错误
- r - 我如何组合 3 列并获得它们的频率?
- vba - 无法使用 VBA 将电子邮件移动到预先存在的文件夹。移动到新文件夹作品
- javascript - 如何防止 MathJax 渲染的元素窃取右键单击事件?
- r - 数据框r和grepl中的两个条件
- c# - 在 SignalR 中将用户添加到 Hub 组
- python - 使用 Dialogflow Python API 在 Dialogflow 代理内创建知识库的问题
- javascript - jQuery - 不允许加载本地资源
- javascript - ReactJs:如何在 RegionDropdown 中选择默认值
- javascript - 在远程方法 beforeRemote 钩子上的 Loopback 中发送回响应