tl;dr: para nomes globais/públicos use AllCaps
como XORcist disse:
class Logger: passAliasLogger = Logger
Para parâmetros de funções e locais de funções, deixe claro que você está lidando com o objeto classe com um nome descritivo como este:
def some_func(logger_class): pass
ou algo ao longo das linhas
def some_func(my_class_classobj): pass
quando a palavra "class"
está realmente no seu nome de classe. Para classobj
, veja também class_
e klass
.
Análise/Motivação (versão longa)
Nenhuma leitura completa, mas num relance PEP 8 não parece estar explícita nisto (nem o guia de estilo python do google para esse assunto).
Desde que o nome de uma variável é provavelmente ainda – outro nome vinculativo em python, na minha opinião não importa realmente se você vincula esse nome com o bloco de definição ou mais tarde com o sinal =
igual a algum objeto.
Para isso eu concordo com o XORcist, nesse nível de módulo as referências “alias” devem aderir ao seu padrão de nomenclatura de classes, provavelmente AllCaps:
class MyClass(object): pass# goodReferenceToClass = MyClass
No entanto, quando se trata de nomes de parâmetros e variáveis, supostamente lowercase_underscores
deve se aplicar, certo? Eu estou descontente apenas com isso, já que isso vai empurrá-lo para a ambiguidade de referência da instância versus classe. Há o potencial de que um nome em minúsculas possa ser uma tentativa de insinuar que o objeto é uma instância. Por essa razão, eu recomendo que você poste o nome da sua variável com letras minúsculas, referenciando nomes de variáveis com o sufixo “class”, assim:
class Logger(object): passdef function_expecting_class_reference(logger_class): pass
Eu renomeei a sua classe de exemplo MyClass
para Logger
porque em cenários reais apenas alguns nomes de classes contêm a string "class"
. No entanto, neste último caso proponho evitar mais uma vez a ambiguidade com o nome descritivo. Por exemplo, você pode usar um sufixo classobj
:
.