tl; dr: pour les noms globaux/publics utilisent AllCaps
comme Xorcist dit:
class Logger:
pass
AliasLogger = Logger
Pour la fonction paramètres et locaux de fonction, préciser que vous avez affaire à l'objet de classe avec un nom descriptif comme celui-ci:
def some_func(logger_class):
pass
ou quelque chose le long des lignes
def some_func(my_class_classobj):
pass
lorsque le mot "class"
est en fait dans votre classname. Pour classobj
, voir également class_
et klass
.
Analyse/Motivation (version longue)
Pas de lecture approfondie, mais un coup d'oeil PEP 8 ne semble pas être explicite sur ce (guide de style python ni Google pour cette matière). Comme un nom de variable est probablement juste un autre name binding en python, à mon avis cela n'a pas vraiment d'importance si vous liez ce nom avec le bloc de définition ou plus tard avec le signe égal =
à un objet.
Pour cela, je suis d'accord avec XORcist dans ce niveau de module références « alias » devrait adhérer à votre niveau de nommage des classes, probablement AllCaps:
class MyClass(object):
pass
# good
ReferenceToClass = MyClass
Cependant, quand il vient au paramètre et les noms de variables, soi-disant lowercase_underscores
devrait appliquer , droite? Je ne suis pas content avec cela, car cela vous poussera dans l'ambiguïté de référence de l'instance par rapport à la classe. Il se peut qu'un nom en minuscules soit une tentative pour indiquer que l'objet est une instance.Pour cette question, je vous recommande postfixant tout-minuscules, les noms de variables-référencement classe avec le suffixe « class », comme ceci:
class Logger(object):
pass
def function_expecting_class_reference(logger_class):
pass
Je rebaptisés votre exemple de classe MyClass
-Logger
parce que dans les scénarios réels que quelques classes name contient la chaîne "class"
. Cependant, dans ce dernier cas, je propose d'éviter l'ambiguïté avec la dénomination descriptive encore une fois. Par exemple, vous pouvez utiliser un suffixe classobj
:
class MyClass(object):
pass
def function_expecting_class_reference(another_param, my_class_classobj):
ReferenceToClass = MyClass
Une autre alternative que je tendance à prendre est d'utiliser le suffixe klass
, comme my_class_klass
. Ce n'est pas tout le monde qui semble avoir ce dernier, mais de toute façon, je n'ai pas encore testé si le premier serait meilleur.
ReferenceToClass est exactement le même que MyClass ici (sémantiquement). Les deux sont des variables qui font référence au même objet de classe. – Kos