クラスからクラス名を取得する必要があります:
class Cls:
notation = None
def __init__(self):
notation = self.__class__.__name__
print(Cls.notation)
プリントしますNone
が必要です'Cls'
それを修正する方法、またはクラスの名前を返すクラス属性を定義する方法は?
クラス属性ではなく、ローカル変数に割り当てています。
def __init__(self):
Cls.notation = self.__class__.__name__
関与するサブクラスがある場合、self.__class__
必ずしもそうではないことに注意してください。あなたが使用したいかもしれませんCls
Cls
def __init__(self):
type(self).notation = self.__class__.__name__
ユースケースによって異なります。
に割り当てるとself.notation
、クラス属性をシャドウするインスタンス属性が作成されるため、機能しません。
Cls.notation == "Cls"
クラスを定義した直後が必要な場合は、次のようにハードコーディングすることもできます。
class Cls:
notation = "Cls"
または
class Cls:
pass
Cls.notation = Cls.__name__
あなたも書くことができますが
class Cls:
notation = __qualname__
ステートメントの最初の行で使用されている名前に基づいて値を設定しますが、__qualname__
ネストも考慮されます。
class Cls1:
class Cls2:
notation = __qualname__ # "Cls1.Cls2", not "Cls2"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加