Difference between revisions of "Object Oriented Programming (OOP) in Python/de"
(Created page with "Jede Methode muss self als Argument haben (automatisch von Python erstellt) und auf die Instanzvariable wird von self zugegriffen.") |
(Created page with "== Getter- und Setter-Methoden ==") |
||
Line 23: | Line 23: | ||
Jede Methode muss self als Argument haben (automatisch von Python erstellt) und auf die Instanzvariable wird von self zugegriffen. | Jede Methode muss self als Argument haben (automatisch von Python erstellt) und auf die Instanzvariable wird von self zugegriffen. | ||
− | == Getter | + | == Getter- und Setter-Methoden == |
To ensure data encapsulation it is recommended to use properties. The getter and setter methods come always after the class constructor. | To ensure data encapsulation it is recommended to use properties. The getter and setter methods come always after the class constructor. |
Revision as of 18:54, 8 June 2019
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
To ensure data encapsulation it is recommended to use properties. The getter and setter methods come always after the class constructor.
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 method: The method which gets the value is decorated with @property Setter method: The method which sets a value is decorated with @function.setter. You have to use the same name in the function name and in this decorater statement.
Instance Objects
An instance of a class is created using the defined class name and in the __init__ method defined arguments.
student1 = Student("Alex","Alexson") student2 = Student("Jenny","Maiersoner")
We created now two objects of the Student class. You can access its attributes as following:
student1.showStudent() student2.showStudent() student1.firstName
The first two lines show how to access methods. The last line shows how to access a public variable.
Inheritence
For this example a school has N students and M teachers. The class School is the superclass (base class) and the classes Student and Teacher are subclasses (derived classes).
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.