Pythons „private“ Klassenvariablen: Eine kulturelle Norm
Die Klassenstruktur von Python unterscheidet sich von der von Java darin, dass sie keine Instanzdeklaration vorschreibt Variablen innerhalb des Konstruktors. Stattdessen können Instanzvariablen innerhalb des Konstruktors initialisiert oder später zugewiesen werden. Diese Flexibilität wirft die Frage auf: Fehlt Python das Konzept privater Variablen?
Die Frage: Warum keine privaten Zugriffsmodifikatoren?
In Java öffentliche, private und Geschützte Zugriffsmodifikatoren schützen den Zugriff auf Klassenvariablen. In Python fehlen solche Zugriffsmodifikatoren jedoch. Das Python Patterns-Handbuch von Bruce Eckel veranschaulicht, dass Instanzvariablen einfach innerhalb des Konstruktors zugewiesen werden, sodass die Frage offen bleibt, wie die Kapselung für sensible Daten erzwungen werden kann.
Die Antwort: Kulturelle Konventionen und das __-Präfix
Python hält sich an eine kulturelle Norm, die von der direkten Änderung der Instanz oder Klassenvariablen anderer Klassen abrät. Im Gegensatz zu Java fordert Python Programmierer dazu auf, die Privatsphäre anderer Klassen zu respektieren. Obwohl es technisch möglich ist, private Java-Variablen durch direkte Bearbeitung der Klassenquelle zu ändern, wird von dieser Praxis dringend abgeraten.
Für diejenigen, die private Variablen in Python emulieren möchten, kann die __-Präfixkonvention verwendet werden. Durch dieses Präfix werden Variablennamen automatisch entstellt, sodass sie außerhalb ihres Namensraums weniger sichtbar sind. Es ist jedoch wichtig zu beachten, dass dies keine narrensichere Sicherheitsmaßnahme ist und bei Bedarf umgangen werden kann.
Zusätzliche Namenskonventionen
Über das Präfix _ hinaus Python empfiehlt außerdem die Verwendung des Präfixes für Variablen, die intern innerhalb einer Klasse oder eines Moduls verwendet werden sollen. Obwohl solche Variablen technisch von außerhalb ihres Gültigkeitsbereichs zugänglich sind, gilt es als gute Praxis, sie nicht zu ändern.
Das obige ist der detaillierte Inhalt vonFehlt Python echte private Variablen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!