Ist es eine schlechte Übung, einen integrierten Funktionsnamen als Attribut oder Methodenbezeichner zu verwenden?
Weiß ich nie verwenden Sie die integrierte Funktion von Namen als Variablen-Bezeichner.
Aber gibt es auch Gründe, Sie nicht zu verwenden als Attribut oder Methode-IDS?
Zum Beispiel, ist es sicher zu schreiben my_object.id = 5
aus, oder definieren Sie eine Instanz-Methode dict
in meiner eigenen Klasse?
InformationsquelleAutor der Frage max | 2012-02-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wird es nicht verwirren, der Dolmetscher aber es könnte die Leute verwirren, die das Lesen Ihres Codes. Unnötige Verwendung von builtin-Namen für Attribute und Methoden sollten vermieden werden.
Anderen krank-Effekt, shadowing gelieferten verwirrt syntax highlighters in den meisten python-fähigen Editoren (vi, emacs, pydev, Leerlauf, usw.) Auch einige der lint-tools warnen vor dieser Praxis.
InformationsquelleAutor der Antwort Raymond Hettinger
Ja, es ist eine schlechte Praxis. Es ist vielleicht nicht sofort alles zerstören, was für Sie, aber es tut immer noch weh Lesbarkeit des Codes.
Selektiv Zitat von PEP20:
Sehen einen Anruf zu
myobject.dict()
es wäre natürlich, anzunehmen, dass es geht, zurückmyobject.__dict__
oder dassmyobject.id()
gibt die gleiche Sache wieid(myobject)
Ist es möglich für Sie, um herauszufinden, dass Sie falsch sind; aber das braucht Zeit und Aufwand und wahrscheinlich dazu führen, einige Fehler zu machen während Sie es herausfinden. Ruft das Attribut
myobject.object_id_number
ist viel länger, aber macht es klarer, dass es anders zuid(myobject)
InformationsquelleAutor der Antwort James Polley
Nein, das ist in Ordnung. Da eine Referenz auf ein Objekt ist erforderlich, es gibt keine Möglichkeit, Sie zu haben, Schatten der built-in.
InformationsquelleAutor der Antwort Ignacio Vazquez-Abrams