2017-06-12 94 views
1

我知道问题的标题非常混乱。我无法想出任何有意义的东西。让我解释一下。如何从孩子班转到其他班的孩子班

我有两个班,我们姑且称之为A和B:

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

class B(object): 
    pass 

在这里面我有一个指的是B类的实例的方法

我有4类,从A继承另外4类继承自B类。现在我想要避免重写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 ...>