Est-ce une mauvaise pratique à utiliser intégré dans le nom de la fonction comme un attribut ou une méthode d'identification?
Je sais que de ne jamais utiliser la fonction intégrée dans les noms de variable identifiants.
Mais existe-il des raisons de ne pas les utiliser comme un attribut ou une méthode identifiants?
Par exemple, est-il sûr d'écrire my_object.id = 5
, ou de définir une méthode d'instance dict
dans ma propre classe?
Vous devez vous connecter pour publier un commentaire.
Il ne faut pas confondre l'interprète, mais elle peut prêter à confusion à la lecture de votre code. Inutile de builtin noms des attributs et des méthodes doit être évitée.
Un autre effet secondaire est que l'ombrage les builtins confond surligneurs syntaxe dans la plupart python-connaissance des éditeurs (vi, emacs, pydev, ralenti, etc.) Par ailleurs, certains lint vais mettre en garde contre cette pratique.
Oui, c'est une mauvaise pratique. Il ne pourrait pas immédiatement casser quelque chose pour vous, mais ça me fait toujours mal la lisibilité du code.
Sélectivement les devis de PEP20:
Voir un appel à
myobject.dict()
il serait naturel de supposer qu'il va revenirmyobject.__dict__
, ou quemyobject.id()
renvoie la même chose queid(myobject)
Il est possible pour eux de savoir qu'ils ont tort; mais cela prendra du temps et de l'effort et probablement conduire à des erreurs alors qu'ils le comprendre. L'appel de votre attribut
myobject.object_id_number
est beaucoup plus long, mais le rend plus clair que c'est différent pourid(myobject)
Non, c'est bien. Depuis une référence d'objet est requise il n'y a aucun moyen d'avoir de l'ombre de l'intégré.
__
, ou qui est identique à un mot-clé?__
aussi longtemps que ils ont également fin avec__
. Notez que Python utilise la plupart de ces pour ses propres fins, même si (comme__dict__
,__init__
, et__new__
).__
?__
à tous.__foo
obtenir mutilé, ce qui n'est pas un problème si c'est une propriété privée.__foo__
signifie que c'est Python internes. Il n'y a pas de problème à faire, mais qu'il est mauvais.