0

たとえば、メソッドのある時点で、の属性としてMainClassaのオブジェクトのインスタンス化を行うものがあります。OtherClassMainClass

mainobj = MainClass()
isinstance(mainobj.otherclassobj, OtherClass) == True

ここで、を拡張してから、新しい拡張クラスでをOtherClass使用します。MainClass

それをインスタンス化するMainClassすべてのメソッドを拡張および再定義する以外に、より便利なオプションがありますか?self.otherclassobjExtendedOtherClass

4

2 に答える 2

2

まだ必要ない場合はOtherClass、次のようなことができます

from other_class_module import ExtendedOtherClass as OtherClass

両方のクラスが必要な場合、またはロジック/メソッドを変更した場合は、を再実装/拡張する必要がありますMainClass

于 2012-09-01T17:08:47.210 に答える
1

の実装を少し変更できる場合はMainClass、それを継承する必要はありません。ちょうどのようなものを持っています

class MainClass:
    def __init__(self, ..., otherclass=OtherClass):
        self.otherclassobj = otherclass()
        ...
    ...

次にMainClass、デフォルトでを使用しますが、キーワード引数としてOtherClass渡すことができます。ExtendedOtherClass

于 2012-09-01T17:11:06.570 に答える