Private Variablen
In Python sind private Variablen Variablen, die nur innerhalb der Klasse, in der sie definiert werden, verwendet werden sollen und nicht von externem Code. Private Variablen sind nicht direkt von außerhalb der Klasse zugänglich.
Um eine private Variable in der Circle-Klasse zu definieren, können Sie das doppelte Unterstrich-Präfix (__) gefolgt vom Variablennamen verwenden. Beispielsweise:
class Circle:
def __init__(self, radius):
self.__radius = radius
Dies definiert eine private Variable __radius in der Circle-Klasse.
Private Variablen sollen nur innerhalb der Klasse, in der sie definiert werden, verwendet werden. Sie sind nicht direkt von außerhalb der Klasse zugänglich. Beispielsweise erhalten Sie einen Fehler, wenn Sie versuchen, auf die __radius-Variable von außerhalb der Circle-Klasse zuzugreifen:
circle1 = Circle(5)
print(circle1.__radius) ## Dies löst einen AttributeError aus
Private Variablen sind nützlich, um Daten innerhalb einer Klasse zu kapseln und die Fähigkeit von externem Code, diese zu ändern, einzuschränken. Es ist jedoch wichtig zu beachten, dass private Variablen in Python nicht wirklich privat sind und immer noch von außerhalb der Klasse mithilfe von "Name Mangling" (Namensverfälschung) zugegriffen werden können.
Name Mangling ist eine Technik, bei der ein spezielles Präfix an den Variablennamen angefügt wird, um den Zugriff von außerhalb der Klasse schwieriger zu machen.
Beispielsweise kann die __radius-Variable immer noch von außerhalb der Circle-Klasse mit der folgenden Syntax zugegriffen werden:
print(circle1._Circle__radius) ## Dies gibt 5 aus
Dies wird jedoch nicht als gute Programmierpraxis angesehen und sollte vermieden werden.
Stattdessen sollten Sie private Variablen nur innerhalb der Klasse, in der sie definiert werden, verwenden und, wenn erforderlich, öffentliche Methoden bereitstellen, um auf die Daten zuzugreifen oder sie zu ändern.
Hier ist ein Beispiel für eine Circle-Klasse mit einer privaten __radius-Variable und öffentlichen Methoden, um auf den Radius zuzugreifen und ihn zu ändern:
class Circle:
def __init__(self, radius):
self.__radius = radius
def get_radius(self):
return self.__radius
def set_radius(self, radius):
self.__radius = radius
Um auf den Radius eines Circle-Objekts zuzugreifen, können Sie die get_radius-Methode verwenden:
circle1 = Circle(5)
print(circle1.get_radius()) ## gibt 5 aus
Um den Radius eines Circle-Objekts zu ändern, können Sie die set_radius-Methode verwenden:
circle1.set_radius(10)
print(circle1.get_radius()) ## gibt 10 aus