In mancanza di uno specifico rivestimento di questo caso PEP 8, si può compensare un argomento per entrambi i lati della medaglia:
Un lato è: Come A
e B
due variabili pure, ma tenere un riferimento a una classe, utilizzare CamelCase (TargetClass
) in questo caso.
Nulla vi impedisce di fare
class A: pass
class B: pass
x = A
A = B
B = x
Ora A
e B
punto alla rispettivamente altra classe, quindi non sono in realtà fissato alla classe.
Quindi A
e B
hanno l'unica responsabilità di tenere una classe (non importa se hanno lo stesso nome o una diversa), e così ha TargetClass
.
Per rimanere imparziale, abbiamo così può sostenere in altro modo: A
e B
sono speciali nella misura in cui vengono creati insieme con le loro classi, e interni le classi avere lo stesso nome. Finora sono una specie di "originale", qualsiasi altro compito dovrebbe essere contrassegnato come speciale nella misura in cui devono essere visti come variabili e quindi in lower_case
.
La verità si trova, come così spesso, da qualche parte nel mezzo. Ci sono casi in cui vorrei andare da una parte e altri dove andrei dall'altra parte.
Esempio 1: Si passa una classe, che forse dovrebbe essere un'istanza, un metodo o una funzione:
def create_new_one(cls):
return cls()
class A: pass
class B: pass
print(create_new_one(A))
In questo caso, è chiaramente cls
stato molto provvisorio e chiaramente una variabile; può essere diverso ad ogni chiamata Quindi dovrebbe essere lower_case
.
Esempio 2: aliasing di una classe
class OldAPI: pass
class NewAPI: pass
class ThirdAPI: pass
CurrentAPI = ThirdAPI
In questo caso, CurrentAPI
deve essere visto come una sorta di alias per l'altro e rimane costante durante l'esecuzione del programma. Qui preferirei CamelCase
.
classi di uso CamelCase. Nomi di variabili (istanze) use_underscore_lower_case –
Perché non l'hai [solo cercato] (https://www.python.org/dev/peps/pep-0008/#class-names)? – jonrsharpe
@jonrsharpe l'ho fatto, ma continuo a trovarlo poco chiaro. I nomi di classe dovrebbero normalmente utilizzare la convenzione CapWords, ok, ma le variabili no. Queste due convenzioni si scontrano, secondo me, quindi non so quale prevalga. – LostMyGlasses