tl;dr: para los nombres globales/públicos usa AllCaps
como dijo XORcist:
class Logger: passAliasLogger = Logger
Para los parámetros de las funciones y los locales de las funciones, deje claro que está tratando con el objeto de la clase con un nombre descriptivo como este:
def some_func(logger_class): pass
o algo parecido a
def some_func(my_class_classobj): pass
cuando la palabra "class"
está realmente en su nombre de clase. Para classobj
, ver también class_
y klass
.
Análisis/Motivación (versión larga)
No he leído a fondo, pero a simple vista la PEP 8 no parece ser explícita en esto (tampoco la guía de estilo de python de google para el caso).
Dado que el nombre de una variable es probablemente un nombre más en python, en mi opinión no importa si se vincula ese nombre con el bloque de definición o después con el signo de igualdad =
a algún objeto.
Por esto estoy de acuerdo con XORcist en que las referencias de «alias» a nivel de módulo deberían adherirse a su estándar de nomenclatura de clases, probablemente AllCaps:
class MyClass(object): pass# goodReferenceToClass = MyClass
Sin embargo cuando se trata de nombres de parámetros y variables, supuestamente lowercase_underscores
debería aplicarse, ¿no? No estoy contento con sólo eso, ya que te empujará a la instancia vs referencia de clase ambigüedad. Existe la posibilidad de que un nombre todo en minúsculas sea un intento de insinuar que el objeto es una instancia. Para ello, recomiendo posfijar los nombres de las variables en minúsculas que hacen referencia a una clase con el sufijo «class», así:
class Logger(object): passdef function_expecting_class_reference(logger_class): pass
He cambiado el nombre de tu clase de ejemplo MyClass
a Logger
porque en los escenarios reales sólo unos pocos nombres de clase contienen la cadena "class"
. Sin embargo, en este último caso, propongo evitar la ambigüedad con un nombre descriptivo de nuevo. Por ejemplo, puede utilizar un sufijo classobj
: