擅长:python、mysql、java
<p>另一个选择不是动态更改类层次结构,而是用新功能装饰对象实例。这通常更干净、更易于调试,因为您只更改代码在控件中的对象,而不必对整个类层次结构进行横切更改。在</p>
<pre><code>def extend_object(obj):
class ExtensionClass(obj.__class__):
def new_functionality(self):
print "here"
obj.__class__ = ExtensionClass
b = Foo()
extend_object(b)
b.new_functionality()
#prints "here"
</code></pre>