tl; dr: do nazwy globalne/public używać AllCaps
jak XORcist powiedział:
class Logger:
pass
AliasLogger = Logger
Dla funkcji parametry i locale funkcji, wyjaśnij, że masz do czynienia z obiektem klasy o opisowej nazwie:
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 swojej nazwy klasy. Dla classobj
, zobacz także class_
i klass
.
Analiza/Motywacja (wersja długa)
Nie dokładny odczyt, ale na pierwszy rzut oka PEP 8 nie wydają się być jednoznaczne w tej sprawie (przewodnik styl pyton Ani Google dla tej sprawy).
Ponieważ nazwa zmiennej jest prawdopodobnie jeszcze-innym name binding w Pythonie, moim zdaniem nie ma znaczenia, czy wiążę tę nazwę z blokiem definicji lub później z =
równym znakiem do jakiegoś obiektu.
Za to zgadzam się z XORcist Na tym poziomie moduł odniesienia „alias” powinny przylegać do standardu klasy nazewnictwa, prawdopodobnie AllCaps:
class MyClass(object):
pass
# good
ReferenceToClass = MyClass
jeśli chodzi jednak do parametru i nazwy zmiennych, podobno powinno stosować lowercase_underscores
, dobrze? Jestem niezadowolony z tego tylko dlatego, że popchnie cię to do nieścisłości odniesienia instancji a klasy. Istnieje możliwość, że nazwa z małymi literami może być próbą wskazania obiektu będącego instancją.Jeśli o to chodzi, polecam postfixing urządzenie wielofunkcyjne małe litery, klasy przedstawieniu nazwy zmiennych z „klasa” sufiks, tak:
class Logger(object):
pass
def function_expecting_class_reference(logger_class):
pass
I przemianowany swoją przykładową klasę MyClass
do Logger
ponieważ w realnych scenariuszach tylko kilka klas nazwa zawiera ciąg "class"
. Jednak w tym ostatnim przypadku proponuję, aby ponownie uniknąć dwuznaczności z opisową nazwą. Na przykład, można użyć classobj
przyrostek:
class MyClass(object):
pass
def function_expecting_class_reference(another_param, my_class_classobj):
ReferenceToClass = MyClass
Inną alternatywą I mają tendencję do podjęcia jest użycie przyrostka klass
, jak my_class_klass
. Nie wszystkim wydaje się, że to drugie, ale w każdym razie mam jeszcze sprawdzić, czy uda im się uzyskać lepsze wyniki.
ReferenceToClass jest dokładnie taki sam jak MyClass tutaj (semantycznie). Obie są zmiennymi, które odnoszą się do tego samego obiektu klasy. – Kos