In Python kann man special methods verwenden, um etwas Ähnliches wie Operatorüberladung in C++ zu erreichen, indem man eine spezielle Methode für __setattr__ definiert. Ich habe gesehen, dass einige Programmierer dies verwenden, um eine schreibgeschützte Sperre unter Verwendung eines verfälschten Variablennamens zu erstellen. Das ist ziemlich schlau, bis ich ein Element zu einem Array der gesperrten Klasse brauche. Zum Beispiel FreeIPA implements this. Dies wäre ziemlich einfach sein, indem einfach zu besiegen Einstellung exampleArray._ReadOnly__locked = False, außer diesem auch durch die __setattr__ spezielle Methode und Ergebnisse in dem FehlerPython: Wie kann ich eine Sperre in mangled Variable, die eine spezielle Methode verwendet, besiegen?
"ipa: ERROR: AttributeError: locked: cannot set NameSpace._ReadOnly__locked to False"
Gibt es einen einfachen und cleveren Weg, um diese zurück zu setzen gefangen wird Lese-Schreib-Modus, so dass ich meinen Wert in das Array einfügen kann?
Haben Sie daran gedacht, dass es einen guten Grund gibt, warum die Autoren von FreeIPA so viel unternommen haben, um das zu erreichen, was Sie tun wollen? – holdenweb
Ja. Aber es gibt auch einen guten Grund, warum ich es besiegen will. Das Projekt bietet auch eine [plugin/extension architecture] (https://abbra.fedorapeople.org/freeipa-extensibility.html) und wenn Sie, sagen wir, Kommentare zu Ihrem [DNS] (http: //www.freeipa .org/page/DNS) Einträge laufen Sie sehr schnell in die schreibgeschützte Sperre. –
Der 'ReadOnly'-Docstring zeigt * Ihnen * an, wie Sie den Schutz umgehen können. – user2357112