tl;dr : pour les noms globaux/publics, utilisez AllCaps comme l’a dit XORcist :

class Logger: passAliasLogger = Logger

Pour les paramètres de fonction et les locaux de fonction, indiquez clairement que vous avez affaire à l’objet classe avec un nom descriptif comme ceci:

def some_func(logger_class): pass

ou quelque chose du genre

def some_func(my_class_classobj): pass

lorsque le mot "class" est effectivement dans votre nom de classe. Pour classobj, voir aussi class_ et klass.

Analyse/Motivation (version longue)

Je n’ai pas lu en profondeur, mais d’un coup d’œil PEP 8 ne semble pas être explicite à ce sujet (ni le guide de style python de google d’ailleurs).

Puisqu’un nom de variable n’est probablement qu’une énième liaison de nom en python, à mon avis, il n’est pas vraiment important de savoir si vous liez ce nom avec le bloc de définition ou plus tard avec le signe = égal à un objet quelconque.

Pour cela, je suis d’accord avec XORcist en ce que les références « alias » au niveau du module devraient adhérer à votre norme de nommage de classe, probablement AllCaps:

class MyClass(object): pass# goodReferenceToClass = MyClass

Cependant, quand il s’agit de paramètres et de noms de variables, soi-disant lowercase_underscores devrait s’appliquer, non ? Je ne suis pas satisfait de seulement cela, car cela vous poussera dans l’ambiguïté de référence d’instance vs classe. Il y a le potentiel qu’un nom tout en minuscules peut être une tentative de faire allusion à l’objet étant une instance. Pour cette raison, je recommande de postfixer vos noms de variables tout en minuscules et faisant référence à une classe avec le suffixe « class », comme ceci:

class Logger(object): passdef function_expecting_class_reference(logger_class): pass

J’ai renommé votre exemple de classe MyClass en Logger parce que dans les scénarios réels, seuls quelques noms de classe contiennent la chaîne "class". Cependant, dans ce dernier cas, je propose d’éviter l’ambiguïté avec un nommage descriptif encore une fois. Par exemple, vous pouvez utiliser un suffixe classobj:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.