如何从子类引用到另一个类的子类

时间:2017-06-12 19:45:20

标签: python inheritance

我知道问题的标题非常令人困惑。我无法想出任何有意义的事情。让我解释一下。

我有两个课程,我们称他们为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类的所有孩子都有一些一般参数,但是儿童班也有自己的特定参数。

1 个答案:

答案 0 :(得分: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 ...>