2012-04-04 80 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