1

我阅读了__str__()vs__repr__()线程,并且,在这里的某个地方(我不记得现在在哪里)我看到了以下代码:

def __repr__(self):
    return "<%s>" % (self.__class__.__name__)

这显然会打印类名,所以如果我有这样的类:

Class A:
    def __repr__(self):
        return "<%s>" % (self.__class__.__name__)

它打印 A (我不能让尖括号出现?)。如果我取出该.__name__位,它会打印<__main__.A> 所以现在我有点困惑,因为肯定 A 是 A 类的类型,而不仅仅是它的名称,而且我不确定该__main__位是从哪里来的,因为我__main__在程序中没有(但是!-我确实知道if __name__ == "__main__"并使用它。)

那么 Class name 和 Class 类型之间有什么区别,是否存在它们不同的情况?

另外,只是想补充一下,到目前为止我从 SA 学到的关于 Python 的几乎所有知识,即使是棘手的问题也可以在这里找到答案(从子类访问超类类变量是我最近的谷歌,SA 就在那里再来一张!!谢谢大家!)

4

1 回答 1

0

您似乎是从 python 解释器外壳中运行代码。在这种情况下,__main__它来自外壳。

示例代码:

>>> class A:
...     def __repr__(self):
...         return "<%s>" % (self.__class__.__name__)
... 
>>> A()
<A>
>>> class A:
...     def __repr__(self):
...         return "<%s>" % (self.__class__)
...         
... 
>>> A()
<__main__.A>

关于类名与类型,您可以参考这篇文章-> Python : terminology 'class' VS 'type'

于 2016-03-29T17:57:16.197 回答