tl;dr: a globális/nyilvános nevekhez használd a AllCaps-t, ahogy XORcist mondta:

class Logger: passAliasLogger = Logger

Függvényparaméterek és függvénylokálok esetében tegye egyértelművé, hogy az osztályobjektumról van szó, egy ilyen leíró névvel, mint ez:

def some_func(logger_class): pass

vagy valami hasonlóval

def some_func(my_class_classobj): pass

mikor a "class" szó valójában az osztálynévben van. A classobj-hoz lásd még class_ és klass.

Analízis/Motiváció (hosszú változat)

Nem olvastam alaposan, de ránézésre a PEP 8 nem tűnik explicitnek erre vonatkozóan (a google python style guide-ja sem egyébként).

Mivel egy változó neve valószínűleg csak egy újabb névkötés a pythonban, véleményem szerint nem igazán számít, hogy azt a nevet a definíciós blokkal, vagy később az = egyenlőségjellel kötjük valamilyen objektumhoz.

Ezért egyetértek XORcistával abban, hogy a modul szintű “alias” hivatkozásoknak be kellene tartaniuk az osztálynevek szabványát, valószínűleg az AllCaps-t:

class MyClass(object): pass# goodReferenceToClass = MyClass

Amikor azonban paraméter- és változónevekről van szó, állítólag a lowercase_underscores-nek kellene érvényesülnie, nem? Csak ezzel nem vagyok elégedett, mivel ez a instance vs class reference kétértelműségbe taszít. Fennáll a lehetősége annak, hogy a csupa kisbetűs név arra utal, hogy az objektum példány. Emiatt azt javaslom, hogy a csupa kisbetűs, osztályra hivatkozó változóneveidet utólagos “class” utótaggal egészítsd ki, például így:

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

A példád MyClass osztályát átneveztem Logger-re, mert a valós forgatókönyvekben csak kevés osztálynév tartalmazza a "class" karakterláncot. Ez utóbbi esetben azonban azt javaslom, hogy a kétértelműséget ismét leíró elnevezéssel kerüljük el. Például használhatsz egy classobj utótagot:

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.