比<__ main __.在0x1624710处的MyClass实例更漂亮的东西

jul*_*ria 6 python class

这是我的课(尽可能简单):

class MyClass():
    def __init__(self, id):
        self.id = id

    def __str__(self):
        return "MyClass #%d" % self.id
Run Code Online (Sandbox Code Playgroud)

当我打印MyClass的一个对象时,我得到了这个美丽的字符串:MyClass #id.但是,当我只是在翻译中"显示"时,我仍然感到讨厌<__main__...>.有没有办法改变这种行为?

>>> c = MyClass(5)
>>> print c
MyClass #5
>>> c
<__main__.MyClass instance at 0x1624710>
Run Code Online (Sandbox Code Playgroud)

rob*_*off 10

def __repr__(self):
    return 'MyClass #%d' % (self.id,)
Run Code Online (Sandbox Code Playgroud)

  • 这样做的原因是`>>> c`真的像`>>> print repr(c)`,即它打印出`c`的Python表示(通常包含比`str(c)更多的信息`,因为它理想地是对象的完整表示. (3认同)