Datenkapselung
class Kunde: # Klassendefinition beginnt mit class Klassenname:
def __init__(self, name): # Konstruktor = spezielle Methode, die beim Erzeugen eines Objekts aufgerufen wird
self.name = name # Eigenschaft name wird initialisiert
k1 = Kunde("Meier") # Objekt k1 wird erzeugt (dabei wird der Konstruktor aufgerufen)
Ein direkter Zugriff auf die Eigenschaft name ist möglich:
print(k1.name) # direkter Zugriff auf die Eigenschaft name
Gegen das Prinzip der Datenkapselung wird verstoßen!
Um das zu korregieren müssen wir dafür sorgen, dass die Eigenschaften eines Objektes privat sind:
class Kunde: # Klassendefinition beginnt mit class Klassenname:
def __init__(self, name): # Konstruktor initialisiert Eigenschaft bei der Erzeugung des Objekts
self.__name = name # Eigenschaft name ist privat "__"
def getName(self): # Methode hat Zugriff auf die private Eigenschaft
return self.__name
k1 = Kunde("Meier") # Objekt k1 wird erzeugt (dabei wird der Konstruktor aufgerufen)
Jetzt muss kann nur noch eine Methode des gleichen Objekts auf die Eigenschaft zugreifen:
print(k1.name) # direkter Zugriff auf Eigenschaft NICHT möglich
print(k1.getName()) # Zugriff über die Methode ist möglich