Python 如何在初始化之前向类添加属性?

Python 如何在初始化之前向类添加属性?,python,attributes,initialization,Python,Attributes,Initialization,问题 我有一个Python模块,它在运行时创建许多其他模块的实例。其他模块通过外部配置文件指定,该文件还包含每个模块的\uuuu init\uuu的所有参数/值 我想向所有新实例添加相同的属性,但我不想在所有类的\uuuu init\uuu中添加新的参数。我该怎么办 我的想法 一个可能的解决方案是:在运行中,我可以通过某种方式操纵模块上的\uuuuu init\uuuu属性,向\uuuu init\uuuuu添加一个新的参数。然后我可以将要添加到所有实例上的属性传递给它 我很确定这违反了Pyth

问题

我有一个Python模块,它在运行时创建许多其他模块的实例。其他模块通过外部配置文件指定,该文件还包含每个模块的
\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