Difference between revisions of "Object Oriented Programming (OOP) in Python/de"
(Created page with "== Klassen == Verwenden Sie die Anweisungsklasse gefolgt vom Klassennamen, um eine neue Klasse in Python anzulegen. Die Klassenbeschreibung (in einfache Anführungszeichen ges...") |
(Created page with "'''Variable studentsNumber:''' Dies ist eine Klassenvariable. Sein Wert wird von allen Instanzen dieser Klasse geteilt. Die Funktion showStudent() zeigt diese Variable an, die...") |
||
Line 17: | Line 17: | ||
print "First Name: ", self.firstName, " - Last Name: ", self.lastName</pre> | print "First Name: ", self.firstName, " - Last Name: ", self.lastName</pre> | ||
− | '''Variable studentsNumber:''' | + | '''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__:''' This is the class constructor which will be called every time when a new instance of this class is created. It does initialize the instance and you can add your custom code too in the class constructor. | '''Method __init__:''' This is the class constructor which will be called every time when a new instance of this class is created. It does initialize the instance and you can add your custom code too in the class constructor. |
Revision as of 18:53, 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__: This is the class constructor which will be called every time when a new instance of this class is created. It does initialize the instance and you can add your custom code too in the class constructor.
Every method must have self as an argument (automatically created by Python) and instance variable are accessed by self.
Getter and setter methods
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.