Python verwendet Klassen und Objekte, um objektorientierte Programmierung (kurz OOP) durchzuführen.
Der Hauptzweck der Objektorientierung besteht darin, die Wiederverwendbarkeit von Programmen zu verbessern. Der Grund, warum wir so früh mit der objektorientierten Programmierung begonnen haben, ist, dass das gesamte Konzept von Python auf Objekten basiert. Das Verständnis von OOP ist der Schlüssel zum weiteren Erlernen von Python.
Das Folgende ist ein objektorientiertes Verständnis, basierend auf der Klassifizierung.
Ähnliche Objekte werden in Kategorien eingeteilt
In der menschlichen Wahrnehmung werden Dinge nach ähnlichen Attributen klassifiziert und die Kategorien werden benannt. Das gemeinsame Merkmal von Vögeln ist beispielsweise, dass sie Federn haben und durch das Legen von Eiern Nachkommen produzieren. Jeder einzelne Vogel basiert auf dem Prototyp eines Vogels.
Objektorientiert simuliert den oben genannten menschlichen kognitiven Prozess. Um cool zu klingen, nennen wir in der Python-Sprache die oben genannten „Dinge“ Objekte.
Zuerst Vögel definieren
class Bird(object): have_feather = True way_of_reproduction = 'egg'
Wir definieren eine Kategorie (Klasse), nämlich Vogel. Im zu dieser Analogie gehörenden Anweisungsblock definieren wir zwei Variablen, eine ist Federn (have_feather) und die andere ist die Art der Reproduktion (way_of_reproduktion). Diese beiden Variablen entsprechen den gerade erwähnten Attributen. Wir werden die Klammern und ihren Inhalt vorerst nicht erläutern und sie als Frage 1 markieren.
Angenommen, ich ziehe ein Küken namens Sommer auf. Es ist ein Objekt und gehört den Vögeln. Verwenden Sie die zuvor definierte Klasse:
summer = Bird() print summer.way_of_reproduction
Erstellen Sie im ersten Satz ein Objekt und erklären Sie, dass „Sommer“ ein Objekt in der Kategorie „Vogel“ ist und dass „Sommer“ ein Objekt ist Ein Bird-Klassenattribut, Verweise auf Attribute werden in der Form von object.attribute (object.attribute) implementiert.
Armer Sommer, du bist nur ein haariges Eierprodukt, so raffiniert.
Aktion
Wenn wir in der täglichen Wahrnehmung Kategorien anhand von Attributen identifizieren, unterscheiden wir manchmal Kategorien basierend darauf, was dieses Ding tun kann. Vögel bewegen sich zum Beispiel. Auf diese Weise wird der Vogel von der Kategorie Haus unterschieden. Diese Aktionen führen zu bestimmten Ergebnissen, beispielsweise zu einer Bewegung, die zu Positionsänderungen führt.
Einige dieser „Verhaltens“-Attribute sind Methoden. In Python werden Methoden durch die Definition von Funktionen innerhalb der Klasse beschrieben.
class Bird(object): have_feather = True way_of_reproduction = 'egg' def move(self, dx, dy): position = [0,0] position[0] = position[0] + dx position[1] = position[1] + dy return position summer = Bird() print 'after move:',summer.move(5,8)
Wir haben die Vogelkategorie neu definiert. Bird verfügt über ein neues Methodenattribut, nämlich die Methode move, die Bewegung darstellt. (Ich gebe zu, dass diese Methode albern ist. Sie können eine interessantere Methode definieren, nachdem Sie die nächste Vorlesung gelesen haben.)
(In seinen Parametern gibt es ein Selbst, das uns den Verweis auf das Objekt selbst erleichtern soll. Das Methode Der erste Parameter muss self sein, unabhängig davon, ob er verwendet wird oder nicht. Der Inhalt über self wird in der nächsten Vorlesung erweitert.
Die anderen beiden Parameter dx, dy stellen die in x- und y-Richtung zurückgelegte Distanz dar . Die Move-Methode gibt schließlich die berechnete Position zurück.
Als wir schließlich die Move-Methode aufgerufen haben, haben wir nur die beiden Parameter dx und dy übergeben, und es war nicht nötig, den Parameter self zu übergeben (da self nur für den internen Gebrauch bestimmt ist).
Mein Sommer kann davonlaufen.
Unterkategorien
Die Kategorien selbst können weiter in Unterkategorien unterteilt werden
Vögel können beispielsweise weiter in Hühner, Wildgänse und Pirol unterteilt werden.
In OOP drücken wir die oben genannten Konzepte durch Vererbung aus.
class Chicken(Bird): way_of_move = 'walk' possible_in_KFC = True class Oriole(Bird): way_of_move = 'fly' possible_in_KFC = False summer = Chicken() print summer.have_feather print summer.move(5,8)
Die neu definierte Chicken-Klasse fügt zwei Attribute hinzu: Bewegungsart (way_of_move), die in KFC (possible_in_KFC) zu finden ist
In der Klassendefinition steht Bird in Klammern. Dies zeigt, dass Chicken eine Unterklasse von Bird ist, das heißt, Chicken erbt von Bird. Natürlich ist Bird die übergeordnete Klasse von Chicken. Huhn genießt alle Eigenschaften von Bird. Obwohl ich nur erklärt habe, dass Summer eine Chicken-Klasse ist, genießt sie die Attribute der übergeordneten Klasse durch Vererbung (sei es das Variablenattribut have_feather oder das Methodenattribut move).
Die neu definierte Oriole-Klasse (Oriole) auch erbt von Vögeln. Wenn Sie ein Pirolobjekt erstellen, weist das Objekt automatisch die Eigenschaften des Vogels auf.
Durch das Vererbungssystem können wir wiederholte Informationen und wiederholte Anweisungen im Programm reduzieren. Wenn wir zwei Klassen separat definieren, ohne von Vögeln zu erben, müssen wir die Attribute von Vögeln in die Definitionen der Hühner- bzw. Pirol-Klassen eingeben. Der gesamte Prozess kann langwierig werden, daher verbessert die Objektorientierung die Wiederverwendbarkeit des Programms.
(Zurück zu Frage 1, das Objekt in den Klammern. Wenn die Klammern ein Objekt sind, bedeutet dies, dass diese Klasse keine übergeordnete Klasse hat (das Ende))
Kategorien verschiedener Dinge, der Reihe nach Um die Welt zu verstehen, praktizieren wir diesen kognitiven Prozess seit unseren Vorfahren. Die Objektorientierung entspricht den menschlichen Denkgewohnheiten. Das sogenannte prozessorientierte Denken, also das Ausführen einer Anweisung vor der nächsten, ist eher maschinelles Denken. Durch objektorientierte Programmierung können wir komplexe Ideen in unserem Denken bequemer ausdrücken.
Zusammenfassung
Kategorie von Dingen nach Attributen (Objekte als Klassen klassifizieren)
Eine Methode ist ein Attribut, das eine Aktion darstellt
Vererbung zur Veranschaulichung des übergeordneten Elements verwenden Klassen-Kind-Klassenbeziehung. Unterklassen verfügen automatisch über alle Eigenschaften der übergeordneten Klasse.
self stellt ein Objekt dar, das basierend auf der Klassendefinition erstellt wurde.
Erstellen Sie ein Objekt: Objektname = Klassenname()
Referenzieren Sie die Attribute des Objekts: object.attribute