Heim > Backend-Entwicklung > Python-Tutorial > Sind die „privaten' Methoden von Python wirklich privat?

Sind die „privaten' Methoden von Python wirklich privat?

Barbara Streisand
Freigeben: 2024-12-02 22:33:11
Original
490 Leute haben es durchsucht

Are Python's

Warum Pythons „private“ Methoden nicht wirklich privat sind

Trotz des doppelten Unterstrichs, der in Python üblicherweise zur Bezeichnung „privater“ Methoden verwendet wird, Diese Methoden bleiben für Benutzer über eine etwas andere Namenskonvention zugänglich.

Der Python-Interpreter benennt diese um 'private' Methoden zu "_ClassName__MethodName". Somit kann die angeblich „private“ Methode „__myPrivateMethod()“ als „_MyClass__myPrivateMethod()“ aufgerufen werden.

Diese Namensverschlüsselung ist nicht als eine Form der Kapselung oder zur Verhinderung des Zugriffs von außen gedacht. Stattdessen dient es dazu, sicherzustellen, dass Unterklassen nicht unbeabsichtigt die „privaten“ Methoden ihrer Oberklassen überschreiben.

Betrachten Sie das folgende Beispiel:

class Foo(object):
    def __init__(self):
        self.__baz = 42
    def foo(self):
        print(self.__baz)
    
class Bar(Foo):
    def __init__(self):
        super(Bar, self).__init__()
        self.__baz = 21
    def bar(self):
        print(self.__baz)
Nach dem Login kopieren

Wenn wir eine Instanz von Bar erstellen und aufrufen Sowohl foo() als auch bar() sehen wir die folgende Ausgabe:

x = Bar()
x.foo()
42
x.bar()
21
Nach dem Login kopieren

Wie aus der Ausgabe hervorgeht, wurde die Unterklasse erfolgreich ausgeführt überschreibt den Wert von __baz, ohne das „private“ Attribut der Oberklasse zu beeinflussen. Darüber hinaus zeigt der Zugriff auf x.__dict__, dass beide Versionen des __baz-Attributs innerhalb der Unterklasseninstanz koexistieren.

Während diese Namensverschlüsselung versehentliche Überschreibungen verhindern kann, verhindert sie nicht den absichtlichen Zugriff auf „private“ Methoden von externen Quellen. Folglich sind die „privaten“ Methoden von Python nicht wirklich privat und sollten nicht zur Kapselung herangezogen werden.

Das obige ist der detaillierte Inhalt vonSind die „privaten' Methoden von Python wirklich privat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage