2012-04-04 79 views
1

假设我有类A1A2 和具有式A1/A2的元素的类可以继承元素的类型变化在基类

现在我有一个班级B'(B)(它继承自B)。 这个类可以使用A1'和A2'代替A1和A2, 这个新类可以以某种方式交换基类中元素的类型吗?

通常我会说这是不可能的,但因为这是关于巨蟒...:P

+0

“元素”是指“属性”在这里还是别的什么? – 2012-04-04 07:09:45

+0

你描述的声音听起来像标准的[多态性](http://en.wikipedia.org/wiki/Polymorphism_(computer_science)),并带有正确的类型声明(总是声明一个超类型为引用类型)语言也是如此,只要'A1''和'A2''继承自'A1'和'A2'。 – BergmannF 2012-04-04 07:12:19

+0

@gnibbler是的,它的确如此 – HWende 2012-04-04 07:21:09

回答

4

你的意思是这样吗?

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 
+0

非常好!感谢这个示例代码,我对python印象深刻。再次。 – HWende 2012-04-04 07:18:59