Difference between revisions of "Object Oriented Programming (OOP) in Python/de"

(Created page with "== Getter- und Setter-Methoden ==")
(Created page with "Um die Datenkapselung zu gewährleisten, wird empfohlen, Properties zu verwenden. Die Methoden getter und setter kommen immer nach dem Klassenkonstruktor.")
Line 25: Line 25:
 
== Getter- und Setter-Methoden ==
 
== 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.
+
Um die Datenkapselung zu gewährleisten, wird empfohlen, Properties zu verwenden. Die Methoden getter und setter kommen immer nach dem Klassenkonstruktor.
  
 
<pre>class Student:
 
<pre>class Student:

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

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 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.

Kategorie: Python