在Python中修补类

6 投票
1 回答
1411 浏览
提问于 2025-04-15 12:06

假设我有一个Python类,我想给它添加一个额外的属性。

那么下面这两种写法有什么区别呢?

import path.MyClass
MyClass.foo = bar

和使用类似这样的写法呢:

import path.MyClass
setattr(MyClass, 'foo', bar)

?

如果没有区别,为什么大家似乎更喜欢用第二种而不是第一种呢?(比如在这里 http://concisionandconcinnity.blogspot.com/2008/10/chaining-monkey-patches-in-python.html

相关问题:

1 个回答

11

这两种写法是一样的,但使用setattr可能更灵活,因为它允许你用一个变量来表示属性的名字。

详细信息请查看:http://docs.python.org/library/functions.html#setattr

撰写回答