Python 如何在初始化之前向类添加属性?
问题 我有一个Python模块,它在运行时创建许多其他模块的实例。其他模块通过外部配置文件指定,该文件还包含每个模块的Python 如何在初始化之前向类添加属性?,python,attributes,initialization,Python,Attributes,Initialization,问题 我有一个Python模块,它在运行时创建许多其他模块的实例。其他模块通过外部配置文件指定,该文件还包含每个模块的\uuuu init\uuu的所有参数/值 我想向所有新实例添加相同的属性,但我不想在所有类的\uuuu init\uuu中添加新的参数。我该怎么办 我的想法 一个可能的解决方案是:在运行中,我可以通过某种方式操纵模块上的\uuuuu init\uuuu属性,向\uuuu init\uuuuu添加一个新的参数。然后我可以将要添加到所有实例上的属性传递给它 我很确定这违反了Pyth
\uuuu init\uuu
的所有参数/值
我想向所有新实例添加相同的属性,但我不想在所有类的\uuuu init\uuu
中添加新的参数。我该怎么办
我的想法
一个可能的解决方案是:在运行中,我可以通过某种方式操纵模块上的\uuuuu init\uuuu
属性,向\uuuu init\uuuuu
添加一个新的参数。然后我可以将要添加到所有实例上的属性传递给它
我很确定这违反了Python的禅意。话虽如此,我还是很好奇人们是如何做到这一点的。您可以迭代
**kwargs
\uuuuuu init\uuuuuu
参数,并使用\uuuuu setattr\uuuuuu
自动设置任何新传递的参数。
例如:
您只需盲目地将这两行加上**kwargs参数添加到类中,然后:
f = Foo(name="bar")
print(f.name)
输出:
bar
这是一个不错的选择。谢谢你给我一个好主意!:)
bar