tl; dr: für global/öffentliche Namen AllCaps
wie XORcist verwenden sagte:
class Logger:
pass
AliasLogger = Logger
Für Funktion Parameter und Funktion Einheimische, machen Sie deutlich, dass Sie mit dem Klassenobjekt mit einem beschreibenden Namen wie folgt umgehen:
def some_func(logger_class):
pass
oder etwas entlang der Linien
def some_func(my_class_classobj):
pass
, wenn das Wort "class"
tatsächlich in Ihrem Klassennamen ist. Für classobj
, siehe auch class_
und klass
.
Analyse/Motivation (Langversion)
keine gründlichen Lektüre, sondern auf einen Blick PEP 8 scheint nicht auf diese explizit zu sein (weder was das betrifft Python Style Guide Googles).
Da ein Variablenname wahrscheinlich nur noch-ein andere name binding in Python ist, meiner Meinung nach ist es nicht wirklich wichtig, ob Sie binden, dass Namen mit der Blockdefinition oder später mit den =
Gleichheitszeichen auf ein Objekt.
Dafür ich mit XORcist dass Modulebene „alias“ Referenzen stimmen sollte Ihren Klasse Benennungsstandard einhalten, wahrscheinlich ALLCAPS:
class MyClass(object):
pass
# good
ReferenceToClass = MyClass
jedoch, wenn es darum geht, und Variablennamen in dem Parameter, angeblich sollte lowercase_underscores
anwenden , Recht? Ich bin nur mit dem unzufrieden, da es dich in die Instanz gegen Klassenreferenzmehrdeutigkeit schieben wird. Es besteht die Möglichkeit, dass ein kleingeschriebener Name ein Versuch ist, das Objekt, das eine Instanz ist, anzudeuten.Was das betrifft, empfehlen postfixing ich Ihre all-Klein, Klasse verweisVariablenNamen mit der „Klasse“ Suffix, wie folgt aus:
class Logger(object):
pass
def function_expecting_class_reference(logger_class):
pass
umbenannt ich Ihr Beispielklasse MyClass
-Logger
weil in realen Szenarien nur wenige Klasse name enthält die Zeichenfolge "class"
. Im letzteren Fall schlage ich jedoch vor, die Mehrdeutigkeit bei der beschreibenden Benennung noch einmal zu vermeiden. Zum Beispiel können Sie einen classobj
Suffix verwenden:
class MyClass(object):
pass
def function_expecting_class_reference(another_param, my_class_classobj):
ReferenceToClass = MyClass
Eine weitere Alternative, die ich nehmen neigen ist das Suffix klass
, wie my_class_klass
zu verwenden. Nicht jeder scheint letzteres zu bekommen, aber ich muss noch testen, ob sie den ersteren besser bekommen würden.
ReferenceToClass ist hier genau wie MyClass (semantisch). Beide sind Variablen, die sich auf das gleiche Klassenobjekt beziehen. – Kos