Python 继承的类能否更改基类中元素的类型

Python 继承的类能否更改基类中元素的类型,python,class,Python,Class,假设我有类A1和A2 以及具有A1/A2类型元素的类B 现在我有了一个类B'(B)(它继承自B)。 此类是否可以使用A1'和A2'而不是A1和A2, 这个新类能否以某种方式交换基类中的元素类型 通常我会说这是不可能的,但既然这是关于python的你是说像这样 class A1(object): pass class A1Child(A1): pass class A2(object): pass class A2Child(A2): pass class

假设我有类A1A2 以及具有A1/A2类型元素的类B

现在我有了一个类B'(B)(它继承自B)。 此类是否可以使用A1'和A2'而不是A1和A2, 这个新类能否以某种方式交换基类中的元素类型

通常我会说这是不可能的,但既然这是关于python的你是说像这样

class A1(object):
    pass

class A1Child(A1):
    pass

class A2(object):
    pass

class A2Child(A2):
    pass


class B(object):

    a1_instance = None
    a2_instance = None

    def __init__(self):
        self.a1_instance = A1()
        self.a2_instance = A2()

class BChild(B):

    def __init__(self):
        self.a1_instance = A1Child()
        self.a2_instance = A2Child()


b_instance = B()

print b_instance.a1_instance
print b_instance.a2_instance


bchild_instance = BChild()

print bchild_instance.a1_instance
print bchild_instance.a2_instance
你是说像这样

class A1(object):
    pass

class A1Child(A1):
    pass

class A2(object):
    pass

class A2Child(A2):
    pass


class B(object):

    a1_instance = None
    a2_instance = None

    def __init__(self):
        self.a1_instance = A1()
        self.a2_instance = A2()

class BChild(B):

    def __init__(self):
        self.a1_instance = A1Child()
        self.a2_instance = A2Child()


b_instance = B()

print b_instance.a1_instance
print b_instance.a2_instance


bchild_instance = BChild()

print bchild_instance.a1_instance
print bchild_instance.a2_instance

这里的“元素”是指“属性”还是其他什么?您所描述的听起来像是标准的,并且具有正确的类型声明(总是将超类型声明为引用类型),在其他语言中也很有可能,只要<代码> A1′< /C>和<代码> A2′<代码>继承了<代码> A1 < /C> >和<代码> A2< /C>。如果我需要BaseCLASS(B)使用A1而不是A1,我不明白C++中的可能是什么,因为我不能像在Pyton中那样用我自己的方式覆盖BaseCLASS元素…(也许我错了)这在Python中是微不足道的,因为Python是完全动态的。在C++中,你可以(非常松散地)把它看作是“一切都是虚拟的”。“元素”在这里是指“属性”还是其他什么东西?你所描述的听起来像标准的,正确的类型声明(总是声明超级类型作为引用类型)在其他语言中也是可能的,只要<代码> A1′< /C>和<代码> A2′<代码>继承了<代码> A1 < /C> >和<代码> A2< /C>。如果我需要BaseCLASS(B)使用A1而不是A1,我不明白C++中的可能是什么,因为我不能像在Pyton中那样用我自己的方式覆盖BaseCLASS元素…(也许我错了)这在Python中是微不足道的,因为Python是完全动态的。在C++术语中,你可以(非常松散地)——把它看作“一切都是虚拟的”。感谢您提供的示例代码,python给我留下了深刻的印象。又来了,好极了!感谢您提供的示例代码,python给我留下了深刻的印象。再一次