tl;dr: グローバル/パブリック名には、XORcist が言ったように AllCaps
を使用します。
class Logger: passAliasLogger = Logger
関数のパラメータやローカル関数では、クラスオブジェクトを扱っていることを明確にするために、次のような説明的な名前を付けてください:
def some_func(logger_class): pass
または
def some_func(my_class_classobj): pass
に沿った何か、実際にクラス名に "class"
が入っている場合。 classobj
については、class_
および klass
も参照してください。
Analysis/Motivation (long version)
しっかり読んでいませんが、一見すると PEP 8 はこれに関して明確ではないようです (google の python style guide もそうですね)。
Python では変数名はおそらく単なる名前結合なので、定義ブロックでその名前を結合するか、後で =
等号で何らかのオブジェクトに結合するかは、あまり重要ではないと私は考えています。
この点については、モジュール レベルの「エイリアス」参照は、クラスの命名基準、おそらく AllCaps に従うべきであるという点で XORcist に同意します:
class MyClass(object): pass# goodReferenceToClass = MyClass
しかしながら、パラメータと変数名に関しては、おそらく lowercase_underscores
を適用すべきですよね? それだけでは、インスタンスとクラス参照の曖昧さに追い込まれるので、不満です。 すべて小文字の名前は、オブジェクトがインスタンスであることを示唆する試みである可能性があります。 この点については、以下のように、すべて小文字のクラス参照変数名に「class」サフィックスを付けることをお勧めします:
class Logger(object): passdef function_expecting_class_reference(logger_class): pass
私は例のクラス MyClass
を Logger
にリネームしました。実際のシナリオでは、クラス名に "class"
という文字が含まれるものはごくわずかだからです。 しかし、後者の場合、私は再び説明的な命名で曖昧さを回避することを提案します。 例えば、classobj
のサフィックスを使用することができます:
。