Viele Kopien werden in Diskussionen darüber gebrochen, warum die Python eine Art Byaka ist - es verbietet nicht, nicht öffentliche Methoden aufzurufen. Und natürlich klangen die Erklärungen im Sinne von „Wir sind alle Erwachsene hier“ mehr als einmal, aber es schien, dass sie nicht genug waren. Ich glaube, ich habe endlich verstanden, wie man das klarer erklärt. Ich hoffe, dass dies wahr ist.
Ich möchte Sie daran erinnern, dass Python für private Methoden den Namen nur dynamisch ändert und den Zugriff darauf in keiner Weise einschränkt. Für geschützte Methoden ist dies jedoch keine Namenskonvention für Methoden. Für diejenigen, die es nicht wirklich wissen, gibt es
hier und
hier zusätzliche Materialien .
Zunächst müssen Sie mit der Frage beginnen, warum die Sprache das Aufrufen von Code verbieten sollte. Viele Sprachen tun dies, aber daraus folgt nicht, dass es richtig ist und sein sollte.
!= .
Was sind die möglichen Optionen?
- Sie sind der Autor des Codes. Aus irgendeinem Grund haben Sie entschieden, dass diese Methode nicht gemeinfrei benötigt wird. Okay, Ihr Recht, dies zu glauben, aber warum sollte sie technisch verboten sein? Ruft dieser Code Dämonen auf und muss ausgeblendet werden? Oder ist es normaler Code und ein anderer Programmierer wie Sie befindet sich möglicherweise in einer Situation, an die Sie nicht einmal denken können und in der er diesen Code verwenden muss. Oder denkst du, dass du ein Übermensch bist und du weißt absolut, dass das nicht sein kann?
- Sie sind Benutzer des Codes einer anderen Person - normalerweise wissen Sie nichts über die Existenz nicht öffentlicher Methoden, es sei denn, Sie unternehmen besondere Anstrengungen (geschützte Methoden können dokumentiert werden, aber mit einem Hinweis darauf, was sie sind). Nehmen wir an, Sie haben wissentlich und zielgerichtet von der Existenz einer nicht öffentlichen Methode erfahren und sie genannt. Was ist passiert? Hat sich die Erde geöffnet und Satan und Saddam sind herausgesprungen? Oder hat es wie erwartet funktioniert? Ich höre jemanden schreien - es kann natürlich während des Upgrades kaputt gehen, aber da Sie absichtlich die nicht öffentliche Methode angewendet haben, verstehen Sie dieses Risiko (wenn nicht, sind Sie fehl am Platz). Darüber hinaus ist die Aktualisierung kein spontaner Prozess, wie der Zerfall des Kerns eines Uranatoms. Alles in der Testumgebung wird brechen. Natürlich kommt es bei einigen vor, dass Aktualisierungen quantenhafter Natur sind und in den unvorhersehbarsten Momenten an den unvorhersehbarsten Orten stattfinden, aber dann ist es lächerlich, dort über einige private Methoden zu sprechen. Ohne sie wird es viele Probleme geben.
Tatsächlich steckt hinter all diesen Argumenten ein wichtiges, man kann sagen philosophisches Prinzip: "Die Maschine ist dumm, die Person ist klug." Das heißt, Es ist nicht Sache der Maschine, Entscheidungen darüber zu treffen, was möglich ist und was nicht, eine Entscheidung, die von einer Person getroffen werden muss.
Sie können dem entgegenwirken, indem Sie sagen, dass der Autor des Codes (eine Person oder eine vernünftige Person) entschieden hat, dass dies unmöglich ist, aber dann kommt ein anderes Prinzip ins Spiel, das Prinzip der Freiheit und Verantwortung: „Wenn Sie bereits etwas mit anderen geteilt haben, diktieren Sie nicht, wie sie sind wir müssen es benutzen, sie selbst sind für ihre Handlungen verantwortlich “, hier kamen wir gerade zu dem Schluss, dass wir alle hier Erwachsene sind und für unsere Handlungen verantwortlich sind.
Jemand wird sagen, dass das Tippen dieselbe Einschränkung ist - stimmt, aber dies ist nur dann der Fall, wenn eine Maschine einer Person sagt, oh ich bin dumm, ich weiß nicht, was ich tun soll - wen und welchen Typ ich führen soll, bitte erklären.
Übrigens gibt es ein großartiges Beispiel für einen Fall, in dem die Autoren entschieden haben, dass sie das Auto intelligent machen können, aber es ihnen nicht gelungen ist - dies ist das YAML-Format. Die Autoren haben eine große Spezifikation geschrieben, die nur
wenige Menschen implementieren können oder die nicht klar genug ist , aber es gibt
grundlegende Probleme Dies hängt nicht mit der Implementierung zusammen, wenn Versuche, die Art der Seife zu erraten (so zu tun, als wäre die Maschine intelligent), zu einem Fiasko führen.
In der
Python-Welt gab es einen Mann, der dies verstand (und
ausführlich beschrieb). Seine Bibliothek sieht einfach nach dem richtigen Ansatz aus - die Daten sind für Menschen lesbar, aber für die Daten gibt es ein separates, von Menschen geschriebenes Schema, mit dem die Maschine nicht vorgeben kann, intelligent zu sein, sondern zu wissen, welcher Typ, aber leider ist dieser Ansatz noch nicht zum Mainstream geworden.
Ich hoffe, ich habe es geschafft, die Erklärung der Python-Philosophie zu verbessern und mich über andere Ansätze lustig zu machen.