Quelle est la longueur maximale d'un nom d'attribut en python?
Je suis en train d'écrire un ensemble de fonctions python qui effectuent une sorte de vérification de la conformité à un code source du projet. J'aimerais préciser assez détaillé des noms de fonctions, par exemple: check_5_theVersionOfAllVPropsMatchesTheVersionOfTheAutolinkHeader()
Comme excessivement longs noms de être un problème pour python? Est-il une longueur maximale pour les noms d'attribut?
Merci de ne pas le faire. Long les noms ne sont pas toujours mauvais, mais ils sont d'une odeur de code. Dans ce cas, je voudrais raccourcir le nom et mettre une description plus détaillée dans un doc de la chaîne. Aussi, je voudrais soit de consigner les résultats avec beaucoup de détails ou de jeter un écrit clair exception expliquant l'échec de la vérification.
OriginalL'auteur Alexander Tobias Bockstaller | 2013-06-04
Vous devez vous connecter pour publier un commentaire.
2.3. Les identifiants et mots-clés à partir de La Référence au Langage Python:
Mais vous violez PEP-8 le plus probable, ce qui n'est pas vraiment cool:
Également vous violez PEP-20 (le Zen de Python):
"Entièrement descriptive" et "lisible" sont deux choses distinctes. Longtemps, longtemps, camelcase chaînes sont le premier, pas le dernier.
En effet. Je déteste quand je rencontre des choses comme
AggregateAccountabilityViewManager<AlternateSetupScrollingLoaderView> aggregateAccountabilityViewManagerForAlternateSetupScrollingLoaderViews = new AggregateAccountabilityViewManager<AlternateSetupScrollingLoaderView>();
(aléatoire exemple Java) dans le code. Tout simplement parce que de l'achèvement de code fait des trucs comme ça beaucoup plus facile à écrire ne signifie pas que vous devriez.Parce que functionsThatTellYouExactlyWhatTheydoincamelcase(areReallyAnnoyingBecauseItAllRunstogether).
J'adore les commentaires, s'ils témoignent d'une interface publique. Si ils ne le font pas, je préfère essayer d'écrire du code qui n'a pas besoin de commentaires.
OriginalL'auteur kirelagin
Ils pourraient être un problème pour le programmeur. Garder les noms de fonction relativement courte, et l'utilisation docstrings du document.
OriginalL'auteur Ignacio Vazquez-Abrams
Depuis noms d'attribut viens d'obtenir hachée et transformé en touches sur
inst.__dict__
pour 99% des classes que vous aurez jamais rencontre, il n'y a pas de limite sur la longueur. Tant qu'il est hashable, il va fonctionner comme un nom d'attribut. Pour les autres 1% des classes de violon avec__setattr__
\__getattr__
\__getattribute__
de façon à briser la garantie que quelque chose hashable est un nom d'attribut valide bien que, la précédente ne s'applique pas.Bien sûr, comme d'autres l'ont souligné, vous disposez d'un code du style et de la qualité des préoccupations avec plus attributs nommés. Si vous vous trouvez avoir besoin de tels noms longs, c'est probablement une indication d'un défaut de conception dans votre programme, et vous devriez probablement chercher à donner vos données de plus de structure hiérarchique et une meilleure abstraction et la division de responsabilité dans vos fonctions et méthodes.
Serait plus productive si elle est formulée
the interpreter doesnt hash method names on each invocation, see ...
Sauf si vous utilisez un JIT ou un autre type de l'optimisation ou de look-ahead interprète (qui à ma connaissance Disponible ne l'est pas), oui.
Pas idiot du tout. Ma compréhension est que le Disponible interprète a été spécialement conçu pour être aussi simple à étendre que possible, ce qui signifie compromis pour l'optimisation de la performance. Donc pourquoi PyPy et similaires existent.
Il semble qu'ils sont internés... lors de l'utilisation d'un char* string. hg.python.org/cpython/file/tip/Objects/object.c#l816 en revanche,
setattr
n'utilisent stage Python cordes. hg.python.org/cpython/file/tip/Objects/object.c#l953OriginalL'auteur Silas Ray