sagen, dass ich diesen Beispielcode habe ich mich für ein Python Lektion Schreiben Ich halte:Was ist falsch mit superclass.method (Objekt, Parms)?
class Enum(dict):
def __init__(self, *values):
values = {mnemo: num
for num, mnemo in enumerate(values)}
dict.__init__(self, values) # ← this
def __getattr__(self, name):
return self[name]
Dies ist zumindest auf einem flachen Verfahren wie erwartet zu funktionieren scheint, aber was ich die meiste Zeit sehen auf der Literatur im Internet ist:
- vermeiden von eingebauten Typen erben: it's much better to type out proxy methods by hand!
super().method
nicht explizit mit Namensuperclass.method
Ich denke, vor allem letzteres ist mehr TROCKEN, aber super() wird komplizierter zu erklären, sobald ich anfange, Mehrfachvererbung zu werfen. Ich möchte sicherstellen, dass es dort keine bösen Überraschungen gibt, auf die andere Leute stoßen werden.
Wenn Sie Super einführen, tun Sie es richtig. Man kann es nicht gut gebrauchen, ohne das Konzept des MRO zu verstehen. Siehe [Pythons Super() als Super!] (Http://rhettinger.wordpress.com/2011/05/26/super-considered-super/). – delnan
@ Delnan Ich habe tatsächlich erwogen, es überhaupt nicht einzuführen: P – badp