2017-06-12 28 views
1

私は質問のタイトルが非常に混乱していることを知っています。私は意味のある何かを考え出すことができませんでした。私はそれを説明しましょう。子クラスから別のクラスの子クラスへの参照方法

私は2つのクラスを持っている、のは、AとB、それらを呼びましょう:私はAから継承する4つのクラスを持って、私はクラスB

のインスタンスを参照する方法を持っていることで

class A(object): 
    def get_instance_of_b(): 
     return B() 

class B(object): 
    pass 

とクラスBから継承する別の4つのクラス。今、私が望むのは、get_instance_of_b()メソッドの書き換えを避けることです。クラスA1(Aの子)はB1(Bの子)のインスタンスを取得する必要があります。

どのような方法が最適ですか?あるいは、私はクラスの構造に間違っているだろうか?

私のクラスが行うことにコンテキストを与える:クラスAはデータを処理し、クラスBは入力パラメータを検証します。クラスAのすべての子はいくつかの一般的なパラメーターを共有していますが、子クラスも固有のパラメーターを持っています。

答えて

0

Aクラス(あなたの "プロセッサ")をBクラス(あなたの "バリデータ")に明示的にマッピングして、そのようにルックアップする必要があります。

class A(object): 
    def get_validator(self): 
     return validators[self.__class__]() 

class A1(A): 
    ... 

class B(object): 
    ... 

class B1(B): 
    ... 

validators = {A:B, A1:B1} 

、そのように使用します。

>>> a1 = A1() 
>>> a1.get_validator() 
<__main__.B1 object at ...> 
関連する問題