Warum schlägt die Initialisierung meiner Klasse mit „__int__' oder „_init_' anstelle von „__init__' fehl?

Linda Hamilton
Freigeben: 2024-11-24 13:33:19
Original
254 Leute haben es durchsucht

Why Does My Class Initialization Fail with

Warum die Klasseninitialisierung mit „def __int__“ oder „def _init_“ fehlschlägt

Problem:
Beim Versuch, eine Klasse mit einem Konstruktor namens „def __int__“ oder „def _init_“, treten Fehler auf wie „TypeError: Beispiel() akzeptiert keine Argumente“ oder „AttributeError: ‚Beispiel‘-Objekt hat kein Attribut ‚Attribut‘.“

Ursache:
Diese Fehler treten aufgrund eines Tippfehlers auf, bei dem der Konstruktor falsch benannt ist. Der korrekte Name für den Konstruktor lautet "__init__", mit zwei Unterstrichen auf jeder Seite.

Erklärung der Ausnahmemeldungen:

  • TypeError: Python löst einen TypeError aus, wenn ein Funktionsaufruf versucht, Parametern Argumente zuzuweisen, die nicht definiert sind Der Konstruktor akzeptiert keine Argumente.
  • AttributeError: Dieser Fehler tritt auf, wenn Sie versuchen, auf ein Attribut zuzugreifen, das für das Objekt nicht vorhanden ist. Da der Konstruktor nicht korrekt definiert wurde, war dies nicht der Fall Legen Sie beliebige Attribute für das Objekt fest.

Warum ist der Fehler nicht aufgetreten? Früher:

Die Syntaxfehlerprüfung erkennt diesen Fehler nicht, da die Methodennamen „def __int__“ und „def _init_“ syntaktisch gültig sind. Python weist diesen Namen keine besondere Bedeutung zu.

Mögliche Konsequenzen:

Wenn die Klasse nicht ordnungsgemäß initialisiert wird, kann dies zu unvorhersehbarem Verhalten führen, einschließlich fehlender Attribute oder Laufzeitfehler .

Schutz vor dem Problem:

  • Lesen Sie Ihren Code sorgfältig durch, um sicherzustellen, dass der Konstruktor korrekt als „__init__“ benannt ist.
  • Erwägen Sie, „__init__“ als erste Methode in der Klassendefinition zu platzieren als Konvention.
  • Verwenden Sie eine IDE, die Syntaxprüfung und Warnungen für potenzielle Fehler bereitstellt.

Das obige ist der detaillierte Inhalt vonWarum schlägt die Initialisierung meiner Klasse mit „__int__' oder „_init_' anstelle von „__init__' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage