Lassen Sie uns klassisch werden: Wie man Module und Klassen mit Python erstellt

In objektorientierten Computersprachen wie Python sind Klassen im Grunde eine Vorlage zum Erstellen eigener Objekte. Objekte sind eine Kapselung von Variablen und Funktionen in einer einzigen Entität. Objekte erhalten ihre Variablen und Funktionen aus Klassen.

Sag was?

Hier sind einige Beispiele, die Ihnen das Verständnis erleichtern - lesen Sie weiter. Es gibt auch eine interaktive Code-Shell. Klicken Sie einfach oben im Fenster auf die Schaltfläche "Ausführen".

Der einfachste Weg, Klassen zu beschreiben und zu verwenden, ist folgender:

Stellen Sie sich vor, Sie haben große Kräfte. Sie erstellen eine Art ("Klasse").

Anschließend erstellen Sie Attribute für diese Art („Eigenschaften“) - Größe, Gewicht, Gliedmaßen, Farbe, Kräfte usw.

Dann erstellen Sie eine Instanz dieser Art - Fido der Hund, Drogon von Game of Thrones und so weiter. Dann arbeiten Sie mit diesen Instanzen:

  • In einem Spiel würden sie zum Beispiel mit ihren Attributen handeln, interagieren.
  • In einer Banking-App wären dies die verschiedenen Transaktionen.
  • In einer App zum Kaufen / Verkaufen / Handeln / Leasing von Fahrzeugen könnte die Fahrzeugklasse dann Unterklassen wie Autos hervorbringen. Jedes hat Attribute wie Kilometerstand, Optionen, Funktionen, Farbe und Ausstattung.

Sie können bereits sehen, warum dies nützlich ist. Sie erstellen, verwenden, passen und verbessern Elemente auf sehr effiziente, logische und nützliche Weise.

Inzwischen haben Sie wahrscheinlich erkannt, dass dies eine Methode zum Klassifizieren und Gruppieren ist, die der Art und Weise ähnelt, wie Menschen lernen:

  • Tiere sind Lebewesen, die im Grunde genommen keine Menschen oder Bäume sind
  • dann geht es weiter mit verschiedenen Tierarten - Hunde, Katzen sind wahrscheinlich die ersten Tiere, von denen die meisten von uns erfahren haben
  • Dann bewegen Sie sich zu verschiedenen Attributen von Tieren - Formen, Größen, Geräusche, Anhänge und so weiter.

Als Sie zum Beispiel ein Kind waren, war Ihr erstes Verständnis eines Hundes wahrscheinlich etwas mit vier Beinen, die bellten. Dann haben Sie gelernt zu unterscheiden, dass einige echte Hunde waren, andere Spielzeug. Dass dieses "Hund" -Konzept viele Arten enthielt.

Das Erstellen und Verwenden von Klassen ist im Grunde:

  • Erstellen einer Vorlage zum Einfügen von „Dingen“ - eine Klassifizierung
  • die dann bearbeitet werden kann. Zum Beispiel, wenn Sie alle Personen mit Hunden aufrufen, die Sie bitten könnten, einen Link zu einem Blog über Haustiere zu erstellen, oder alle Bankkunden, die möglicherweise gute Aussichten für eine neue Kreditkarte haben.

Der Hauptpunkt hierbei ist, dass Klassen Objekte sind, die Instanzen dieser Vorlagen erzeugen können, auf die Operationen und Methoden angewendet werden können. Es ist eine hervorragende Möglichkeit, eine Hierarchie für jede Organisation oder jeden Prozess zu konzipieren, zu organisieren und aufzubauen.

Wenn unsere Welt komplexer wird, ist dies eine Möglichkeit, diese Komplexität aus einer hierarchischen Perspektive nachzuahmen. Darüber hinaus wird ein tieferes Verständnis der Prozesse und Interaktionen für geschäftliche, technische und soziale Umgebungen unter dem Gesichtspunkt der virtuellen Informationstechnologie aufgebaut.

Ein Beispiel könnte ein von Ihnen erstelltes Videospiel sein. Jedes Zeichen kann eine „Klasse“ mit eigenen Attributen sein, die mit Instanzen anderer Klassen interagiert. König George von der "König" -Klasse könnte mit Court Jester Funnyman von der "Clown" -Klasse interagieren und so weiter. Ein König könnte eine königliche "Diener" -Klasse haben, und eine "Diener" -Klasse würde zum Beispiel immer eine "König" -Klasse haben.

Das werden wir tun:

  • Erstelle eine Klasse und benutze sie
  • Erstellen Sie ein Modul und verschieben Sie die Klassenerstellung und -initiierung in das Modul
  • Rufen Sie das Modul in einem neuen Programm auf, um die Klasse zu verwenden

Der Code ist in GitHub hier verfügbar.

#TSB - Create Class in Python - rocket positions (x,y) and graph
#some items and comments bolded to call attention to processimport matplotlib.pyplot as plt
class Rocket(): def __init__(self, x=0, y=0): #each rocket has (x,y) position; user or calling function has choice #of passing in x and y values, or by default they are set at 0 self.x = x self.y = y def move_up(self): self.y += 1 def move_down(self): self.y -= 1 def move_right(self): self.x += 1 def move_left(self): self.x -= 1
#Make a series of rockets - x,y positions, I am calling it rocketrockets=[]rockets.append(Rocket())rockets.append(Rocket(0,2))rockets.append(Rocket(1,4))rockets.append(Rocket(2,6))rockets.append(Rocket(3,7))rockets.append(Rocket(5,9))rockets.append(Rocket(8, 15)) #Show on a graph where each rocket is
for index, rocket in enumerate(rockets): #original position of rockets print("Rocket %d is at (%d, %d)." % (index, rocket.x, rocket.y)) plt.plot(rocket.x, rocket.y, 'ro', linewidth=2, linestyle="dashed", markersize=12) #move the 'rocket' one up rocket.move_up() print("New Rocket position %d is at (%d, %d)." % (index, rocket.x, rocket.y)) #plot the new position plt.plot(rocket.x, rocket.y, 'bo', linewidth=2, linestyle="dashed", markersize=12) #move the rocket left, then plot the new position rocket.move_left() plt.plot(rocket.x, rocket.y, 'yo', linewidth=2, linestyle="dashed", markersize=12)
#show graph legend to match colors with positionplt.gca().legend(('original position','^ - Moved up', '< - Moved left'))plt.show()#plt.legend(loc='upper left')

Lassen Sie uns nun ein Modul erstellen und einen Teil des obigen Codes in das Modul verschieben. Jedes Mal, wenn wir diesen einfachen Satz von x, y-Koordinaten in einem beliebigen Programm erstellen müssen, können wir das Modul dazu verwenden.

Was ist ein Modul und warum brauchen wir es?

Ein Modul ist eine Datei, die Python-Definitionen und -Anweisungen enthält. Modul ist Python-Code, der von anderen Programmen für häufig verwendete Aufgaben aufgerufen werden kann, ohne sie in jedes einzelne Programm eingeben zu müssen, das sie verwendet.

Wenn Sie beispielsweise "matplotlib.plot" aufrufen, rufen Sie ein Paketmodul auf. Wenn Sie dieses Modul nicht hätten, müssten Sie die Plotfunktionalität in jedem Programm definieren, das ein Plotdiagramm verwendet.

Aus der Python-Dokumentation:

Wenn Sie den Python-Interpreter beenden und erneut eingeben, gehen die von Ihnen vorgenommenen Definitionen (Funktionen und Variablen) verloren. Wenn Sie ein etwas längeres Programm schreiben möchten, sollten Sie die Eingabe für den Interpreter mit einem Texteditor vorbereiten und stattdessen mit dieser Datei als Eingabe ausführen. Dies wird als Erstellen eines Skripts bezeichnet. Wenn Ihr Programm länger wird, können Sie es zur einfacheren Wartung in mehrere Dateien aufteilen. Möglicherweise möchten Sie auch eine praktische Funktion verwenden, die Sie in mehreren Programmen geschrieben haben, ohne die Definition in jedes Programm zu kopieren. Um dies zu unterstützen, bietet Python die Möglichkeit, Definitionen in eine Datei einzufügen und sie in einem Skript oder in einer interaktiven Instanz zu verwenden des Dolmetschers. Eine solche Datei wird als Modul bezeichnet.Definitionen aus einem Modul können in andere Module oder in das Hauptmodul importiert werden (die Sammlung von Variablen, auf die Sie in einem Skript zugreifen können, das auf der obersten Ebene und im Taschenrechnermodus ausgeführt wird).

Hier ist unser einfaches Modul. Die Klassenerstellung und die Funktionen sind erforderlich, um eine Instanz dieser Klasse aus dem obigen Programm in eine eigene Klasse zu verschieben. Wir werden dies dann in einem neuen Programm verwenden, indem wir einfach dieses Modul aufrufen und referenzieren:

Beachten Sie, was wir oben gemacht haben:

  • hat die Klasse erstellt und initialisiert
  • hat eine Funktion erstellt, um eine Instanz der Klasse in die vier Hauptrichtungen (nach oben, unten, rechts, links) und in die Inkremente zu verschieben - als Parameter oder Argumente für die Funktion
  • hat eine weitere Funktion erstellt, um den Abstand zwischen zwei Instanzen der Klasse mithilfe der Diagrammabstandsformel zu berechnen

So verwenden wir das neue Modul, um dasselbe Programm aus dem ersten Teil neu zu schreiben. Beachten Sie, simple_module1dass wir im Importabschnitt zu Beginn jetzt das Modul erstellen, das wir gerade erstellt haben:

Here’s the output from the code using our module. Note that they are the same, except for the chart title and the shape of the position markers, which I changed for comparative purposes.

That’s great, you may say — what are some other uses for this? One classic example is a bank account. A customer class might contain the name and contact details and — more importantly — the account class would have deposit and withdrawal elements.

This is grossly oversimplified but, for illustrative purposes, it is useful. That’s it — create a template, then define instances of that template with details (properties), and add value by adding, subtracting, modifying, moving, and using these instances for your program objectives.

Still wondering about classes? Ok, let’s get “classy” — here’s another simple illustration. We will call this class “Person”. It has only two properties — name and age. We will then add an instance of this with a person’s name and age, and print it. Depending on what your objective is, you can imagine all the other details you might add — for example, marital status and location preferences for a social networking app, job experience in years and industry specialization for a career related app. Press the little triangle below to see it work.

So there you have it. You can create many different classes, with parent classes, sub-classes and so on. Thanks for reading — please clap if you liked it. Here are some other references if you would like to learn more:

  • Python documentation — Classes
  • Python Object Oriented — Tutorials Point
  • Classes and Objects — learnpython.org