Python 2.7 __init __ () nimmt genau 2 argumente (3 gegeben)

Ich habe diese Klassen. Person ist die Elternklasse und Schüler ist die Kinderklasse:

#Person class class person(object): def __init__(self, name): self.name = name def pr(self): print "I'm " + self.name #Student class from personClass import person class student(person): def __init__(self, avr, name): self.avr = avr super(student, self).__init__(self, name) def pr(self): super(student, self).pr(self) print "My avrage is " + str(self.avr) + "\n" 

Ich bekomme diesen Fehler auf Zeile 17, wenn ich versuche, eine Instanz meiner Klasse zu machen init () nimmt genau 2 Argumente (3 gegeben) und Person. Init (selbst, name) funktioniert gut Was ist falsch mit meinem Code und wie benutze ich super in python 2.7?

  • Wie macht Pythons "Super" das Richtige?
  • Super () hebt "TypeError: muss Typ sein, nicht classobj" für neuartigen Klasse
  • Python: super () - wie Proxy-Objekt, das die MRO-Suche an einer bestimmten Klasse startet
  • Python Multi-Vererbung, __init__
  • Python selbst und super in Mehrfachvererbung
  • Python super __init__ Vererbung
  • Explizite Verabschiedung von Selbst beim Aufruf der Superklasse __init__ in Python
  • Verschiedene Möglichkeiten zur Verwendung von __init__ für PyQt4
  • 2 Solutions collect form web for “Python 2.7 __init __ () nimmt genau 2 argumente (3 gegeben)”

    Wenn du super benutzt hast, gehst du nicht self auf die Zielmethode. Es ist implizit vergangen.

     super(student, self).__init__(name) 

    Das sind 2 Argumente insgesamt (Selbst, Name). Wenn du selbst vergangen bist, war das insgesamt 3 (Selbst, Selbst, Name).

    Sie können verwenden

     super(Student, self).__init__(name) 

    In dem das Selbst an die init- Methode übergeben worden ist, also musst du es nicht wieder in der init- Methode schreiben. Aber wenn du benutzt hast

     super(Student, Student).__init__(self, name) 

    oder

     super(Student, self.__class__).__init__(self, name) 

    Du musst dich selbst in der init- Methode aufschreiben.

    Python ist die beste Programmiersprache der Welt.