tl;dr: pro globální/veřejné názvy použijte AllCaps, jak řekl XORcist:

class Logger: passAliasLogger = Logger

Pro parametry funkcí a lokální názvy funkcí dejte jasně najevo, že máte co do činění s objektem třídy, popisným názvem, jako je tento:

def some_func(logger_class): pass

nebo něco ve smyslu

def some_func(my_class_classobj): pass

pokud je v názvu třídy skutečně slovo "class". Pro classobj viz také class_ a klass.

Analýza/Motivace (dlouhá verze)

Nemám to důkladně přečtené, ale na první pohled se zdá, že PEP 8 se k tomu explicitně nevyjadřuje (ostatně ani průvodce stylem Pythonu od Googlu).

Protože jméno proměnné je v pythonu nejspíš jen další vazba na jméno, je podle mě úplně jedno, jestli to jméno navážeš s definičním blokem nebo později pomocí = rovnítka na nějaký objekt.

Pro to souhlasím s XORcistem v tom, že odkazy na „alias“ na úrovni modulu by se měly držet vašeho standardu pojmenování tříd, pravděpodobně AllCaps:

class MyClass(object): pass# goodReferenceToClass = MyClass

Jinak pokud jde o názvy parametrů a proměnných, měl by prý platit lowercase_underscores, ne? Jen to se mi nelíbí, protože vás to bude tlačit do nejednoznačnosti instance vs. reference na třídu. Existuje možnost, že název psaný všemi malými písmeny může být pokusem naznačit, že objekt je instancí. Z tohoto důvodu doporučuji postfixovat vaše celá malá písmena v názvech proměnných odkazujících na třídy koncovkou „class“, například takto:

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

Přejmenoval jsem vaši ukázkovou třídu MyClass na Logger, protože v reálných scénářích jen málokterý název třídy obsahuje řetězec "class". Nicméně v tom druhém případě navrhuji, abychom se nejednoznačnosti pomocí popisného pojmenování ještě jednou vyhnuli. Můžete například použít příponu classobj:

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.