Python 2.x super - __init__ - Vererbung funktioniert nicht, wenn Eltern nicht Erben von object
Habe ich das folgende Python-2.7-code:
class Frame:
def __init__(self, image):
self.image = image
class Eye(Frame):
def __init__(self, image):
super(Eye, self).__init__()
self.some_other_defined_stuff()
Ich versuche zu erweitern, die __init__()
- Methode so, dass beim instanziieren ich ein "Auge", es hat ein paar andere Sachen (selbst.some_other_defined_stuff()), zusätzlich zu dem, was Frame-sets bis. Frame.__init__()
muss zuerst ausgeführt werden.
Bekomme ich die folgende Fehlermeldung:
super(Eye, self).__init__()
TypeError: must be type, not classobj
Was ich nicht verstehe die logische Ursache. Kann sich das jemand erklären bitte? Ich bin verwendet, um nur die Eingabe 'super' in ruby.
Frame
erweitern müssenobject
.super
funktioniert nur auf new-style-Klassen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Fehler sind hier:
super()
funktioniert nur für new-style-Klassen; verwendenobject
als Basisklasse fürFrame
zu machen, verwenden Sie new-style-Semantik.Müssen Sie noch zum Aufruf der überschriebenen Methode mit den richtigen Argumenten; pass in
image
zu den__init__
nennen.Also der richtige code wäre:
object
werden redundant in Python > 3.X?object
als Basisklasse ist implizit in Python 3 (da gibt es keine old-style-Klassen mehr).Frame
erweitern müssenobject
da nur die neuen style-Klassen unterstützensuper
nennen, die Sie inEye
etwa so:image
argument nicht weitergegeben werden?Schreiben Sie bitte an :
__metaclass__ = type
an der Spitze der code dann können wir auf super KlasseHi meine Arbeit-codes für python 2.7