tl;dr: dla nazw globalnych / publicznych użyj AllCaps
jak powiedział XORcist:
class Logger: passAliasLogger = Logger
Dla parametrów funkcji i locals funkcji, wyjaśnij, że masz do czynienia z obiektem klasy z opisową nazwą, taką jak ta:
def some_func(logger_class): pass
lub coś wzdłuż linii
def some_func(my_class_classobj): pass
gdy słowo "class"
jest rzeczywiście w twojej nazwie klasy. Dla classobj
, zobacz także class_
i klass
.
Analiza/Motywacja (długa wersja)
Nie czytałem dokładnie, ale na pierwszy rzut oka PEP 8 nie wydaje się być jednoznaczny w tej kwestii (ani google’s python style guide dla tej sprawy).
Ponieważ nazwa zmiennej jest prawdopodobnie tylko kolejnym wiązaniem nazw w pythonie, moim zdaniem nie ma znaczenia, czy wiążesz tę nazwę z blokiem definicji, czy później ze znakiem równości =
do jakiegoś obiektu.
Z tego powodu zgadzam się z XORcistem w tym, że odniesienia „alias” na poziomie modułu powinny stosować się do twojego standardu nazewnictwa klas, prawdopodobnie AllCaps:
class MyClass(object): pass# goodReferenceToClass = MyClass
Jednakże jeśli chodzi o nazwy parametrów i zmiennych, podobno lowercase_underscores
powinno mieć zastosowanie, prawda? Jestem niezadowolony tylko z tego, ponieważ popchnie cię to do niejednoznaczności odniesienia instancji vs klasy. Istnieje potencjał, że nazwa z małymi literami może być próbą podpowiedzi, że obiekt jest instancją. Z tego powodu zalecam postfiksowanie wszystkich małych liter w nazwach zmiennych odwołujących się do klas za pomocą przyrostka „class”, jak poniżej:
class Logger(object): passdef function_expecting_class_reference(logger_class): pass
Zmieniłem nazwę twojej przykładowej klasy MyClass
na Logger
, ponieważ w prawdziwych scenariuszach tylko kilka nazw klas zawiera ciąg "class"
. Jednak w tym drugim przypadku proponuję jeszcze raz uniknąć niejednoznaczności za pomocą opisowego nazewnictwa. Na przykład, możesz użyć przyrostka classobj
:
.