info@a-coding-project.de

Python: Objektorientierte Programmierung

Python unterstützt natürlich Objektorientierte Programmierung (OOP) (u.a. Polymorphie, (Mehrfach-) Vererbung, ...). Hier erst einmal kurzes Beispiel, um ein Gefühl dafür zu vermitteln, wie OOP in Python aussieht:

class Greeter:
   def __init__(self):
       self.message = 'Hello World!'
   def greet(self):
       print self.message

class Shouter(Greeter):
   def greet(self):
       print self.message.upper()

greeter = Greeter() # Instanzierung
greeter.greet()

greeter = Shouter()
greeter.greet()

Hier werden zwei Klassen, Greeter und Shouter, definiert, jeweils mit einer Methode greet. Greeter besitzt einen Konstruktor, __init__, in dem die Instanzvariable message gesetzt wird. Wie auch "normale" Variablen, müssen Instanzvariablen nicht deklariert werden - sie werden durch die Zuweisung automatisch erzeugt. Die Klasse Shouter ist von Greeter abgeleitet und überschreibt die Methode greet.
Nach den Klassendefinitionen wird zuerst ein Greeter-Objekt instanziert, indem die Klasse "aufgerufen" wird. Dies resultiert in einem Aufruf des Konstruktors __init__ von Greeter. Anschließend wird seine Methode greet() aufgerufen. Anschließend wird dies mit Shouter wiederholt.

Alle Methoden deklarieren die Instanzvariable (konventionellerweise self genannt) explizit, im Gegensatz zu C++ und Java , wo der this-Pointer bei jeder (nicht-statischen) Methode implizit vorhanden ist.

Generell sieht eine Klassendefinition wie folgt aus:

class KlassenName(BasisKlasse1, BasisKlasse2, ...):
  <Anweisung-1>
  ...
  <Anweisung-N>

Im Allgemeinen sind die einzelnen Anweisungen def-Blöcke, die Methoden definieren, wie im obigen Beispiel. Andere Anweisungen sind allerdings auch möglich, etwa um eine Klassenvariable zu definieren:

class Test:
  i = 123

print Test.i

Python erlaubt es, Methoden, die eigentlich nur eine spezielle Form von Instanzvariablen sind, an beispielsweise lokale Variablen zuzuweisen:

greeter = Greeter()
greet = greeter.greet
while 1:
  greet()

Dieses Beispiel gibt bis in alle Ewigkeit "Hello World!" aus.

Weiterlesen: ⯈ CGI-Programmierung

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Auch interessant