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:

.

Vastaa

Sähköpostiosoitettasi ei julkaista.