私は、あなたのプログラムの設計に、これを行う必要があるという恐ろしい問題があると強く疑っています。Pythonでは、Javaとは異なり、クラスを解決する必要のある問題はほとんどありません。必要な関数がある場合は、それを定義するだけです。
def function_i_need(a):
"""parameter a: an instance of A"""
pass # do something with 'a'
__class__
ただし、関数をクラスのメソッドにすることを思いとどまらせることができない場合は、属性を設定することでインスタンスのクラスを変更できます。
>>> 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
これは、Bにメソッドがない限り機能します。これは__init__
、明らかに、メソッド__init__
が呼び出されることはないためです。