Ich versuche Python zu lernen und jetzt versuche ich, den Dreh raus zu bekommen und wie man sie mit Instanzen manipuliert.
Ich kann dieses Übungsproblem nicht verstehen:
Erstellen Sie ein Schülerobjekt und geben Sie es zurück, dessen Name, Alter und Hauptfach mit den als Eingabe angegebenen übereinstimmen
def make_student(name, age, major)
Ich verstehe einfach nicht, was es mit Objekt bedeutet. Bedeuten sie, dass ich ein Array innerhalb der Funktion erstellen sollte, die diese Werte enthält? oder eine Klasse erstellen und diese Funktion darin enthalten lassen und Instanzen zuweisen? (Vor dieser Frage wurde ich gebeten, eine Schülerklasse mit Namen, Alter und Hauptfach einzurichten.)
class Student:
name = "Unknown name"
age = 0
major = "Unknown major"
__init__
Methode hier relevant: docs.python.org/2/reference/datamodel.html#object.__init__Antworten:
Beachten Sie, dass es, obwohl eines der Prinzipien in Pythons Philosophie lautet: "Es sollte einen - und vorzugsweise nur einen - offensichtlichen Weg geben, dies zu tun" , immer noch mehrere Wege gibt, dies zu tun. Sie können auch die beiden folgenden Codeausschnitte verwenden, um die dynamischen Funktionen von Python zu nutzen:
Ich bevorzuge Ersteres, aber es gibt Fälle, in denen Letzteres nützlich sein kann - einer bei der Arbeit mit Dokumentendatenbanken wie MongoDB.
quelle
class Unicorn
undhas_hooves = True
anstelle vonname = ""
.Erstellen Sie eine Klasse und geben Sie ihr eine
__init__
Methode:Jetzt können Sie eine Instanz der
Student
Klasse initialisieren :Obwohl ich nicht sicher bin, warum Sie eine
make_student
Studentenfunktion benötigen, wenn sie dasselbe tut wieStudent.__init__
.quelle
Objekte sind Instanzen von Klassen. Klassen sind nur die Blaupausen für Objekte. Also angesichts Ihrer Klassendefinition -
Sie können eine
make_student
Funktion erstellen, indem Sie die Attribute explizit einer neuen Instanz vonStudent
- zuweisenAber es ist wahrscheinlich sinnvoller, dies in einem Konstruktor (
__init__
) zu tun -Der Konstruktor wird bei Verwendung aufgerufen
Student()
. Es werden die in der__init__
Methode definierten Argumente verwendet. Die Konstruktorsignatur wäre nun im WesentlichenStudent(name, age, major)
.Wenn Sie das verwenden, ist eine
make_student
Funktion trivial (und überflüssig) -Zum Spaß finden Sie hier ein Beispiel, wie Sie eine
make_student
Funktion erstellen , ohne eine Klasse zu definieren. Bitte versuchen Sie dies nicht zu Hause.quelle
__init__()
Methode von einem Konstruktor?__init__
ist kein Konstruktor, "weil das Objekt zum Zeitpunkt des Aufrufs bereits erstellt wurde__init__
und Sie bereits einen gültigen Verweis auf die neue Instanz der Klasse haben." ( diveintopython.net/object_oriented_framework/… )Wenn Sie ein Objekt mit einer vordefinierten Klasse erstellen, möchten Sie zunächst eine Variable zum Speichern dieses Objekts erstellen. Anschließend können Sie ein Objekt erstellen und eine von Ihnen erstellte Variable speichern.
Tatsächlich ist diese init- Methode der Konstruktor der Klasse. Sie können diese Methode mithilfe einiger Attribute initialisieren. Wenn Sie ein Objekt erstellen, müssen Sie an diesem Punkt einige Werte für bestimmte Attribute übergeben.
quelle