私はあなたにこれが必要であるというあなたのプログラム設計にひどく間違った何かがあることを強い疑惑、否、信念を持っています。 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
__init__
が決して呼び出されないので、これはBが__init__
メソッドを持たない限り動作します。
class B(A):
def functionIneed():
pass
しかし、(あなたが最初の場所でclassまたはstaticメソッドを作ることに意図されていない限り)本当に何を作ることになることより、このようなものです:
これは私より優れた答えです。 –