Objektorientierte Programmierung ermöglicht es uns, Objekte zu erstellen, die ihre eigenen Methoden wie run haben.
Und Attribute.
Eigenschaften.
Es ist eine großartige Möglichkeit, einer Sprache mehr Funktionalität hinzuzufügen und die reale Welt nachzuahmen, zum Beispiel verwenden wir die
Idee, für ein Spieleunternehmen zu arbeiten.
Obwohl Python uns nur wenige Datentypen zur Verfügung gestellt hat, konnte ich einen Spielercharakter erstellen.
Und jetzt ist mein Chef glücklich, denn dieser Spielercharakter kann im gesamten Spiel verwendet werden.
Und alle anderen Programmierer müssen diese Zeile mit dem benutzerdefinierten Namen und dem Alter des Charakters ausführen.
OP ermöglicht es uns also, Code zu schreiben, der wiederholbar, gut organisiert und auch speichereffizient ist.
Richtig, denn das schreiben wir nur einmal.
Wenn Sie also ein großartiger Entwickler sein möchten, müssen Sie OP kennen und verstehen,
denn so möchten Sie Ihren Code organisieren, weniger prozedural denken und mehr in Bezug
auf Funktionalität denken und Daten gruppieren wie Attribute, zusammen mit Methoden, um diese Klasse zu erstellen, die in
der Lage ist, etwas aus der realen Welt nachzuahmen.
Nun möchte ich Ihnen hier ein nützliches Werkzeug zeigen.
Wir haben gesehen, dass, wenn ich Player Dot mache, mein Editor mir zeigt, was ich zur Verfügung habe, die Eigenschaften, sowie diese
lila Kästchen, die die Methoden sind, die mir zur Verfügung stehen.
Und auf Anhieb sehen Sie, dass ich einen Namen habe und laufe, aber dann habe ich all diese anderen, die
ich standardmäßig habe.
Nun, dies sind alles Dundar- oder magische Methoden, auf die wir eingehen werden.
Aber der Schlüssel hier ist, dass, wenn ich so etwas wie Hilfe mache, eine neue Funktion ist, die Sie vielleicht noch
nie gesehen haben, und lassen Sie uns dies auskommentieren.
Wenn ich klicke, laufe.
Ich bekomme tatsächlich, nun ja, die gesamte Blaupause des Objekts.
Wenn ich so etwas wie eine Liste mache.
Und ich klicke auf Ausführen.
Auch hier zeigt es den Blueprint, den es hat, und dies ist eine großartige Möglichkeit, um zu sehen, welchen Klassen-Blueprint einige
der Python-Datentypen haben.
Dies ist etwas, auf das wir später noch einmal zurückkommen werden.
Aber ich möchte hier auf diesen Spielercharakter zurückkommen. Wir haben gesehen, dass wir Attribute
erstellen können und Attribute dynamisch sind.
Das heißt, wenn wir ein Objekt instanziieren, werden sie für dieses spezifische Objekt wie Name und Alter eindeutig
sein.
Und wir mussten dieses Selbstschlüsselwort verwenden, um sicherzustellen, dass es dynamisch war.
Es gibt jedoch noch etwas anderes, das als Klassenobjektattribut bezeichnet wird, und es könnte so aussehen, sagen wir, wir hätten
den Spielercharakter und sie mussten, sagen wir, ein zahlendes Mitglied sein, um dieses Spiel zu spielen.
Sie müssen gespielt haben oder eine Mitgliedschaft erhalten haben.
Also lassen Sie uns eine Mitgliedschaft gleich haben.
Wahr.
Im Gegensatz zu diesem sehen Sie jetzt Attribut, dass es sich in derselben Zeile wie unsere Methoden befindet
und als Klassenobjekt bezeichnet wird.
Genau genommen.
Und ein Klassenobjektattribut unterscheidet sich im Gegensatz zu diesen regulären Klassenattributen dadurch, dass es nicht
dynamisch, sondern statisch ist.
Also wenn ich klicke.
Führen Sie hier aus und wir möchten sicherstellen, dass wir etwas drucken, also lassen Sie uns den Player drucken.
Und ich klicke auf Ausführen.
Nun, ich bekomme den Player, das ist großartig, aber wenn ich eine Punktmitgliedschaft mache.
Und ich klicke auf Ausführen.
Schaut euch das an, ich bekomme das gleich zum kauen wenn ich hier Spieler eins mache.
Als gut, und ich klicke auf Ausführen.
Ich bekomme so hin, dass alle Spieler die Mitgliedschaft auf "true" gesetzt haben, aber das ist nicht dynamisch.
Es ist ein Klassenobjektattribut, was bedeutet, dass es sich um ein tatsächliches Attribut dieser Klasse handelt.
Und das ist etwas, das wir verwenden, wenn es keine Veränderung gibt.
Dies wird wahr sein und für alle Objekte existieren, so dass Sie es nicht wirklich ändern können, sondern nur alle Objekte,
die wir instanziieren, haben Zugriff darauf.
Dies ändert sich also nicht über Instanzen hinweg und wir können dies auch hier unten oder überall in
diesem Klassenplan verwenden.
Nehmen wir zum Beispiel an, wir wollten überprüfen, ob.
Die Mitgliedschaft besteht, daher prüfen wir, ob die Mitgliedschaft wahr ist.
Was ich meine, ist es immer.
Das ist also ein bisschen überflüssig, aber hier drin.
Ich kann nur sagen, wenn die Mitgliedschaft wahr ist, dann werde ich einen Namen und ein Alter zuweisen, aber damit wir auf
die Mitgliedschaft zugreifen können, muss ich eine Selbstmitgliedschaft machen, denn denke daran, Selbst bezieht sich auf diesen Spielercharakter,
damit wenn ich das laufe.
Alles funktioniert immer noch, und wenn ich Spieler mache, ein Punktname.
Das funktioniert immer noch, oder ich kann mich auf den eigentlichen Spielercharakter beziehen, also Spielercharakter, Mitgliedschaft.
Also wenn ich hier auf Ausführen klicke.
Dies funktioniert auch, weil es sich um ein Klassenobjektattribut handelt.
Wenn ich vielleicht im Laufen wäre, ändern wir dies in schreien und schreien, es wird rennen wollen.
Lassen Sie uns diese Zeile entfernen.
Es wird gedruckt.
Eine F-Zeichenfolge, die sagt, dass mein Name ist.
Und gib ihm einen Namen, denkst du, das wird funktionieren, probieren wir es aus, sagen wir schreien.
Und stellen Sie sicher, dass wir diese Methode ausführen, und klicken Sie dann erneut auf Schreien.
Wenn ich klicke, laufe.
Ich bekomme einen Luftnamen, der online nicht definiert ist, 11, wenn ich hier auf Zeile elf gehe.
Name ist nicht definiert.
Warum ist das so?
Nun, weil wir selbst nicht benutzt haben.
Also lass uns einen Selbstpunktnamen machen.
Und wenn ich auf Ausführen klicke.
Da gehst du.
Mein Name ist Tom.
Mein Name ist Cindy.
OK, genial, und ich kann es selbst, denn ich übergebe es hier als ersten Parameter und alle Methoden erhalten
den ersten Parameter, ein self, damit wir sie verwenden können.
Aber könnte ich einfach Spieler, Charakter, Domainnamen eingeben, wenn ich auf Ausführen klicke?
Ich bekomme ein Luftspiel, ein Charakter hat keinen Attributnamen.
Nun, warum ist das so?
Weil name kein Klassenobjektattribut ist.
Es ist nicht wirklich eine Eigenschaft oder ein Attribut des Spielercharakters.
Nein, es ist in unserer Konstruktorfunktion init-Funktion definiert.
Das ist hier also ein kleiner Haken und Sie müssen sich daran gewöhnen, dass ein Klassenobjektattribut etwas ist,
das sich über verschiedene Instanzen hinweg nicht ändert, im Gegensatz zu einem Attribut oder ein Klassenattribut ist
etwas, das dynamisch und für jede Klasse spezifisch ist Objekt.
Die Art und Weise, wie wir darauf zugreifen, ist anders, wo wir tatsächlich auf die Mitgliedschaft zugreifen können,
aber damit wir überall in unserer Klasse auf einen Namen oder ein Alter zugreifen können, müssen wir den
Selfie-Namen verwenden -Methode in einer Klasse, selbst wenn ich hier eine neue erstelle und sagen
wir, diese neue wird ausgeführt.
Nun, noch einmal muss ich mich selbst als Parameter verwenden und dann alles andere, was ich hinzufügen möchte.
Und hier.
Als zweiten Parameter, damit wenn ich klicke, sagen wir ausführen.
Ich passe in die.
Hallo, solche Argumentation.
Ich weiß, das ist viel, aber hoffentlich beginnst du, die Regeln des Unterrichts zu befolgen, wenn du dich erst einmal an
diese Regeln erinnert hast, dann wird es immer einfacher.
Aber das üben wir im nächsten Video noch ein bisschen.