2012-04-04 8 views
1

Angenommen, ich habe Klassen A1 und A2 und eine Klasse B, die Elemente vom Typ A1/A2.Kann Klassenwechsel Art der Elemente in der Basisklasse geerbt

Jetzt habe ich eine Klasse B '(B) (es erbt von B). Kann diese Klasse A1 'und A2' anstelle von A1 und A2 verwenden, kann diese neue Klasse den Typ der Elemente in der Basisklasse irgendwie austauschen?

Normalerweise würde ich sagen, es ist unmöglich, aber da diese über Python ist ...: P

+0

Bedeutet "Elemente" hier "Attribute" oder etwas anderes? –

+0

Was Sie beschreiben klingt wie Standard [Polymorphismus] (http://en.wikipedia.org/wiki/Polymorphism_ (computer_science)) und mit korrekten Typ-Deklarationen (immer einen Supertyp als Referenztyp deklariert) wäre in anderen gut möglich Sprachen auch, solange 'A1'' und 'A2'' von' A1' und 'A2' erben. – BergmannF

+0

@gnibbler ja tut es – HWende

Antwort

4

Sie mögen das bedeuten?

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

Ausgezeichnet! Danke für den Beispielcode und ich bin beeindruckt von Python. Nochmal. – HWende

Verwandte Themen