[python-users] Vererbung und Subtyping
do_not_reply_to_this_address at t-online.de
do_not_reply_to_this_address at t-online.de
Mi Apr 29 16:36:39 CEST 2009
Hallo zusammen,
Ich versuche gerade die kleinen aber feinen Unterschiede zwischen
Vererbung und Subtyping zu verstehen. Dazu habe ich versucht ein Python
Beispiel zu bauen was Vererbung ohne Subtyping demonstrieren soll. Nur
weiss ich nicht ob es das wirklich tut und ob die Begriffe wirklich
richtig verstanden habe. Hier das Beispiel:
class cat:
def meow(self):
print "meow!"
class dog:
def bark(self):
print "wow!"
class catdog(cat,dog):
pass
catdog1=catdog()
print isinstance(catdog1,dog)
catdog1.bark()
snoopy=dog()
catdog2=cat()
catdog2.bark=snoopy.bark
print isinstance(catdog2,dog)
catdog2.bark()
Ausgabe:
1 True
2 wow!
3 False
4 wow!
Jetzt habe ich also einen Implementierungsanteil von snoopy an catdog2
vererbt. Oder von mir aus von Klasse dog an catdog2 vererbt. (wow! in
der vierten Zeile). Jedoch ist catdog2 keine Instanz eines Subtyps von
dog (False in der dritten Zeile). Allerding ist catdog1 eines Instanz
eins eines Subtyps von dog (True in der ersten Zeile), daher ist der
Implementierungsanteil automatisch vererbt (wow! in der zweiten Zeile).
Die Interfaces in Java bilden jetzt ein Beispiel dafür das ich eine
Subtypen bilde aber keine Implentierung aus dem SuperTypen in den
SubTypen übernehme, also nicht erbe.
Gruß Dirk
Mehr Informationen über die Mailingliste python-users