擅长:python、mysql、java
<p>我有一个强烈的怀疑,不,信念,你的程序设计有可怕的错误,它需要你这样做。在Python中,与Java不同的是,很少有问题需要类来解决。如果您需要一个函数,只需定义它:</p>
<pre><code>def function_i_need(a):
"""parameter a: an instance of A"""
pass # do something with 'a'
</code></pre>
<p>但是,如果我不能劝阻您将函数设为类的方法,您可以通过设置实例的<code>__class__</code>属性来更改实例的类:</p>
<pre><code>>>> class A(object):
... def __init__(self):
... pass
...
>>> class B(A):
... def functionIneed(self):
... print 'functionIneed'
...
>>> a = A()
>>> a.functionIneed()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'A' object has no attribute 'functionIneed'
>>> a.__class__ = B
>>> a.functionIneed()
functionIneed
</code></pre>
<p>只要B没有<code>__init__</code>方法,这就可以工作,因为很明显,<code>__init__</code>永远不会被调用。</p>