Ich habe den folgenden Code, der die folgenden zwei Probleme hat:
%Vor%Dieser Code stammt aus einem Tutorial und im Tutorial funktioniert es gut. Ich habe Python 2.7 und verwende das PyDev-Plugin für Eclipse.
%Vor%Um zu verstehen, warum das, was Sie geschrieben haben, fehlgeschlagen ist, müssen Sie ein wenig darüber wissen, wie Klassendefinitionen in Python funktionieren. Wie Sie vielleicht wissen, ist Python eine interpretierte Sprache: Es gibt ein Programm, das Python-Dateien liest und sie so ausführt, wie es geht. Wenn der Interpreter auf eine Klassendefinition stößt, geschieht Folgendes:
Was ist also passiert, als Sie die Funktion main
innerhalb Ihres Codes eingerückt haben? In Schritt 2 haben Sie auf den Namen Animal
verwiesen. Aber dieser Name wird nicht vor Schritt 4 definiert! Tatsächlich kann nicht in dem Stadium definiert werden, in dem Sie darauf Bezug genommen haben, denn das wäre zirkulär. Wenn Sie main
außerhalb der Klassendefinition verschieben, wird es erst ausgeführt, nachdem die Schritte 1-4 abgeschlossen wurden. Daher wird der Name Animal
bereits gebunden.
Übrigens, der Code, den Sie geschrieben haben, ist nicht gut Python. Sie sollten wahrscheinlich versuchen, ein besseres Tutorial zu finden; Die übliche Empfehlung ist "Dive Into Python". Ich habe es so umgeschrieben, wie es gemacht werden sollte:
%Vor%Ihr Einzug ist deaktiviert. Beachten Sie, dass in Python der Einzug zählt. Probieren Sie:
%Vor%Die von Ihnen definierte Hauptfunktion sieht aus, als wäre sie innerhalb der Animal-Klasse. Main sollte eine Funktion (Klassen enthalten Methoden) außerhalb der Tierklasse sein. Sie sollten auch Ihre Klasse Animal von Objekt erben, zB
class Tier (Objekt):
Tags und Links python