2010-07-03 2 views

Antwort

11

Vererbung macht mich denken Sie an eine Klassifizierung Hierarchie Und die Reihenfolge der Argumente zu super ist hierarchisch aufgebaut:.. zuerst die Klasse, dann die Instanz

Eine weitere Idee, durch die Antwort inspiriert von ~ unutbu:

class Fubb(object): 
    def __init__(self, *args, **kw): 
     # Crap, I can't remember how super() goes!? 

Schritte in den richtigen super() Anruf aufzubauen.

__init__(self, *args, **kw)    # Copy the original method signature. 

super(Fubb).__init__(self, *args, **kw) # Add super(Type). 
        /
       ------- 
      /
super(Fubb, self).__init__(*args, **kw) # Move 'self', but preserve order. 
+0

Oh Junge, das ist perfekt. Vielen Dank. –

5

ich nicht. In Python 3 können wir

nur schreiben
super().method(params) 
+1

Interessant. Immer noch auf Python 2.6 so hab ich das noch nicht gesehen (obwohl ich mir im Moment nicht wirklich sicher bin ob ich das "eleganter/korrekter" finde) – ChristopheD

+0

Ah, das hatte ich nicht realisiert. Interessant - danke. –

10

erinnern Sie einfach, dass die self ist optional-super(Type) ermöglicht den Zugriff auf ungebundene Super Methoden - und optionale Argumente zuletzt immer kommen.

+0

Ah, auch interessant - das hatte ich nicht bemerkt. –

2

In der Regel wird super innerhalb einer class Definition verwendet. Dort, (wieder typischerweise), sollte das erste Argument zu super immer der Name der class sein.

class Foo(object): 
    def __init__(self,*args,**kw): 
     super(Foo,self).__init__(*args,**kw) 
Verwandte Themen