tl;dr: globaaleille/julkisille nimille käytä AllCaps kuten XORcist sanoi:
class Logger: passAliasLogger = Logger
Funktioparametreille ja funktioiden lokaaleille tee selväksi, että olet tekemisissä luokkaobjektin kanssa kuvaavalla nimellä kuten tämä:
def some_func(logger_class): pass
tai jotain tämän suuntaista
def some_func(my_class_classobj): pass
kun sana "class" on itse asiassa luokkanimessäsi. For classobj, see also class_ and klass.
Analyysi/Motivaatio (pitkä versio)
En ole lukenut perusteellisesti, mutta yhdellä silmäyksellä PEP 8 ei näytä olevan eksplisiittinen tästä (eikä myöskään Googlen python-tyyliopas muutenkaan).
Koska muuttujan nimi lienee pythonissa vain vielä yksi nimen sitominen, ei mielestäni ole oikeastaan väliä sitooko tuon nimen määrittelylohkolla vai myöhemmin = yhtäläisyysmerkillä johonkin objektiin.
Sen suhteen olen samaa mieltä XORcistin kanssa, että moduulitason ”alias”-viittausten tulisi noudattaa luokkien nimeämisstandardiasi, luultavasti AllCaps:
class MyClass(object): pass# goodReferenceToClass = MyClass
Mutta kun kyse on parametrien ja muuttujien nimistä, niin oletettavasti lowercase_underscores:n pitäisi päteä, eikö? Olen tyytymätön vain tuohon, koska se työntää sinut instanssi vs. luokkaviittaus -epämääräisyyteen. On mahdollista, että kaikki pienet kirjaimet sisältävällä nimellä yritetään vihjata, että objekti on instanssi. Sen vuoksi suosittelen, että kaikki pienaakkoset, luokkiin viittaavat muuttujien nimet postfixataan ”class”-liitteellä, esimerkiksi näin:
class Logger(object): passdef function_expecting_class_reference(logger_class): pass
Nimesin esimerkkiluokkasi MyClass uudelleen Logger:ksi, koska todellisissa skenaarioissa vain harva luokan nimi sisältää merkkijonon "class". Tuossa jälkimmäisessä tapauksessa ehdotan kuitenkin, että epäselvyys vältetään jälleen kerran kuvaavalla nimeämisellä. Voit esimerkiksi käyttää päätettä classobj:
.