Python 继承的类能否更改基类中元素的类型
假设我有类A1和A2 以及具有A1/A2类型元素的类B 现在我有了一个类B'(B)(它继承自B)。 此类是否可以使用A1'和A2'而不是A1和A2, 这个新类能否以某种方式交换基类中的元素类型 通常我会说这是不可能的,但既然这是关于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
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给我留下了深刻的印象。再一次