Objektorientierte Programmierung (OOP) in Python

This page is a translated version of the page Object Oriented Programming (OOP) in Python and the translation is 52% complete.

This is a brief introduction to Object Oriented Programming (OOP) in the programming language Python. You need to have some knowledge about OOP, because this tutorial does cover only how to use OOP in Python.

Klassen

Verwenden Sie die Anweisungsklasse gefolgt vom Klassennamen, um eine neue Klasse in Python anzulegen. Die Klassenbeschreibung (in einfache Anführungszeichen geschrieben) und alle Klassenelemente (Instanzvariablen, etc.) werden nach der Klassenanweisung geschrieben (intendet). Dies ist ein einfaches Beispiel für eine Klasse:

class Student:
  'This is the class for all students of the high school'
   studentsNumber = 0
  
   def __init__(self, firstName, lastName):
     self.firstName = firstName
     self.lastName = lastName
     Student.studentsNumber +=1

   def showStudent(self):
      print "First Name: ", self.firstName, " - Last Name: ", self.lastName

Variable studentsNumber: Dies ist eine Klassenvariable. Sein Wert wird von allen Instanzen dieser Klasse geteilt. Die Funktion showStudent() zeigt diese Variable an, die die Anzahl der erstellten Schüler (Instanzen dieser Klasse) enthält.

Method __init__: Dies ist der Klassenkonstruktor, der jedes Mal aufgerufen wird, wenn eine neue Instanz dieser Klasse erstellt wird. Es initialisiert die Instanz und Sie können Ihren eigenen Code auch im Klassenkonstruktor hinzufügen.

Jede Methode muss self als Argument haben (automatisch von Python erstellt) und auf die Instanzvariable wird von self zugegriffen.

Getter- und Setter-Methoden

Um die Datenkapselung zu gewährleisten, wird empfohlen, Properties zu verwenden. Die Methoden getter und setter kommen immer nach dem Klassenkonstruktor.

class Student:

   def __init__(self, firstName, lastName):
     self.firstName = firstName
     self.lastName = lastName

    @property
    def firstName(self):
          return self.__firstName

    @firstName.setter
    def firstName(self, firstName):
          self.__firstName = firstName

    @property
    def lastName (self):
          return self.__lastName

    @lastName.setter
    def firstName(self, lastName):
          self.__lastName = lastName

Getter-Methode: Das Verfahren, das den Wert erhält, ist mit @property dekoriert. Setter-Methode: Das Verfahren, das einen Wert setzt, wird mit @function.setter dekoriert. Sie müssen den gleichen Namen im Funktionsnamen und in dieser decorater-Anweisung verwenden.

Instanzobjekte

Eine Instanz einer Klasse wird mit dem definierten Klassennamen und in den in der Methode __init__ definierten Argumenten erzeugt.

student1 = Student("Alex","Alexson")
student2 = Student("Jenny","Maiersoner")

Wir haben nun zwei Objekte der Klasse Student erstellt. Auf seine Attribute können Sie wie folgt zugreifen:

student1.showStudent()
student2.showStudent()
student1.firstName

Die ersten beiden Zeilen zeigen, wie man auf Methoden zugreift. Die letzte Zeile zeigt, wie man auf eine öffentliche Variable zugreift.

Vererbung

Für dieses Beispiel hat eine Schule N Schüler und M Lehrer. Die Klasse Schule ist die Oberklasse (Basisklasse) und die Klassen Student und Teacher sind Unterklassen (abgeleitete Klassen).

class School:
	'School'
	def __init__(self, schoolname):
		self.schoolname = schoolname
	
	def displayInformation(self):
		print("School name: ", self.schoolname)

class Student(School):
    'Student of a school'
	def __init__(self, firstname, lastname, schoolname):
		School.__init__(self, schoolname)
		self.firstname = firstname
		self.lastname = lastname

	def displayInformation(self):
		print("First name: ", self.firstname, " - Last name: ", self.lastname)
		
		
class Teacher(School):
    'Teacher of a school'
	def __init__(self, firstname, lastname, degree, schoolname):
		School.__init__(self, schoolname)
		self.firstname = firstname
		self.lastname = lastname
		self.degree = degree

	def displayInformation(self):
		print("First name: ", self.firstname, " - Last name: ", self.lastname, " - Degree: ", self.degree)


Um eine Klasse zu erben, müssen Sie den Klassennamen in runde Klammern setzen. Sie müssen den Konstruktor der Oberklasse in den Konstruktoren der Unterklassen aufrufen, der die Variablen erhält, die in der Oberklasse initialisiert werden müssen. Dies geschieht nicht automatisch, also müssen Sie das programmieren. Python sucht zuerst nach Methoden (in diesem Beispiel: displayInformation) in Unterklassen, dann in der Oberklasse, wenn es in den Unterklassen keine gefunden hat. Wenn Sie auf die Methode in diesem Beispiel displayInformation über eine deklarierte Klasse zugreifen, dann haben Sie Zugriff auf beide Methoden in der Unter- und Oberklasse, wenn Sie einen neuen Teacher angelegt haben.

Kategorie: Python