tl;dr: pentru nume globale/publice folosiți AllCaps așa cum a spus XORcist:

class Logger: passAliasLogger = Logger

Pentru parametrii funcțiilor și localurile funcțiilor, clarificați faptul că aveți de-a face cu obiectul de clasă cu un nume descriptiv ca acesta:

def some_func(logger_class): pass

sau ceva de genul

def some_func(my_class_classobj): pass

când cuvântul "class" este de fapt în numele clasei. Pentru classobj, vezi și class_ și klass.

Analiză/Motivație (versiunea lungă)

Nu am citit temeinic, dar la prima vedere PEP 8 nu pare să fie explicit în această privință (nici ghidul de stil python al Google, de altfel).

Din moment ce un nume de variabilă este probabil doar încă o altă legare de nume în python, în opinia mea nu prea contează dacă legați acel nume cu blocul de definiție sau mai târziu cu semnul = egal la un obiect oarecare.

Pentru aceasta sunt de acord cu XORcist în sensul că referințele „alias” la nivel de modul ar trebui să adere la standardul de denumire a clasei dumneavoastră, probabil AllCaps:

class MyClass(object): pass# goodReferenceToClass = MyClass

Cu toate acestea, când vine vorba de nume de parametri și variabile, se presupune că ar trebui să se aplice lowercase_underscores, nu? Sunt nemulțumit doar de acest lucru, deoarece vă va împinge în ambiguitatea referinței de instanță vs. referință de clasă. Există posibilitatea ca un nume cu toate minusculele să fie o încercare de a sugera că obiectul este o instanță. În acest sens, vă recomand să postfixați numele variabilelor care fac referire la clase, toate în minuscule, cu sufixul „class”, astfel:

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

Am redenumit clasa de exemplu MyClass în Logger deoarece în scenariile reale doar câteva nume de clasă conțin șirul "class". Cu toate acestea, în acest din urmă caz, propun să evităm încă o dată ambiguitatea cu o denumire descriptivă. De exemplu, puteți utiliza un sufix classobj:

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.