のは、あなたがクラスを定義しましょう何を意味するのか私に説明することができます:
class MyClass:
def __str__(self):
return str(self.__class__)
あなたはクラスでは、あなたが得るものに見えることを印刷しようとした場合:
に
>>> instance = MyClass()
>>> print(instance)
__main__.MyClass
そのクラスの文字列バージョンは、それが中で定義されているモジュールが含まれているためである。この場合には、それが現在実行されているモジュール、シェルで定義されているので、それはとして表示。我々はしかし、self.__class__.__name__
を使用する場合:
class MyClass:
def __str__(self):
return self.__class__.__name__
instance = MyClass()
print(instance)
それは出力:
MyClass
クラスの__name__
属性はモジュールが含まれていません。
注:__name__
属性は、最初にクラスに与えられた名前を与えます。すべてのコピーは名前を保持します。例えば:
class MyClass:
def __str__(self):
return self.__class__.__name__
SecondClass = MyClass
instance = SecondClass()
print(instance)
出力:
MyClass
__name__
属性は、クラス定義の一部として定義されているからです。 SecondClass = MyClass
を使用すると、クラスに別の名前を割り当てるだけです。どのような形でも、クラスまたはその名前は変更されません。
[何がpythonの属性 "__class__"であるかを見てください](http://stackoverflow.com/questions/8060751/what-in-the-world-is-the-attribute-class- in-python) –
私はすべてそれを見てください – robert