tl;dr: per i nomi globali/pubblici usate AllCaps come ha detto XORcist:

class Logger: passAliasLogger = Logger

Per i parametri di funzione e i locali di funzione, rendete chiaro che avete a che fare con l’oggetto classe con un nome descrittivo come questo:

def some_func(logger_class): pass

o qualcosa del genere

def some_func(my_class_classobj): pass

quando la parola "class" è effettivamente nel vostro classname. Per classobj, vedi anche class_ e klass.

Analisi/Motivazione (versione lunga)

Nessuna lettura approfondita, ma a colpo d’occhio PEP 8 non sembra essere esplicito su questo (né la guida di stile di google per quella materia).

Poiché un nome di variabile è probabilmente solo un altro nome vincolante in python, secondo me non ha molta importanza se si lega quel nome con il blocco di definizione o dopo con il segno = uguale a qualche oggetto.

Per questo sono d’accordo con XORcist nel fatto che i riferimenti “alias” a livello di modulo dovrebbero aderire al vostro standard di denominazione delle classi, probabilmente AllCaps:

class MyClass(object): pass# goodReferenceToClass = MyClass

Ma quando si tratta di nomi di parametri e variabili, presumibilmente lowercase_underscores dovrebbe applicarsi, giusto? Sono insoddisfatto solo di questo, dal momento che vi spingerà nell’ambiguità tra istanza e riferimento alla classe. C’è il potenziale che un nome tutto minuscolo possa essere un tentativo di suggerire che l’oggetto sia un’istanza. Per questo motivo, raccomando di postfissare i vostri nomi di variabili tutti minuscoli e che fanno riferimento alla classe con il suffisso “class”, come questo:

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

Ho rinominato la vostra classe di esempio MyClass in Logger perché negli scenari reali solo alcuni nomi di classe contengono la stringa "class". Tuttavia in quest’ultimo caso propongo di evitare ancora l’ambiguità con una denominazione descrittiva. Per esempio, si può usare un suffisso classobj:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.