比 <__main__.MyClass 实例在 0x1624710> 更美的东西

6 投票
2 回答
3477 浏览
提问于 2025-04-17 07:30

这是我的类(尽量简单):

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

    def __str__(self):
        return "MyClass #%d" % self.id

当我打印一个MyClass的对象时,我得到的字符串是:MyClass #id。但是当我在解释器中“显示”它时,我却看到这个难看的<__main__...>。有没有办法改变这种情况?

>>> c = MyClass(5)
>>> print c
MyClass #5
>>> c
<__main__.MyClass instance at 0x1624710>

2 个回答

1
>>> class MyClass():
...     def __init__(self, id):
...         self.id = id
...     def __repr__(self):
...         return "MyClass #%d" % self.id
... 
>>> c = MyClass(5)
>>> c
MyClass #5

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。

10

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,当用户点击一个按钮时,程序就会做出反应。这种情况我们通常会用“事件”来处理。

事件就像是一个信号,告诉程序发生了什么事情。比如,用户点击了按钮、移动了鼠标或者按下了键盘上的某个键。程序可以通过监听这些事件,来决定接下来要做什么。

为了让程序能够处理这些事件,我们需要给它设置一些“监听器”。监听器就像是一个守卫,时刻关注着这些事件的发生。一旦有事件发生,监听器就会立刻通知程序去执行相应的操作。

总之,事件和监听器的结合让我们的程序能够对用户的操作做出反应,从而提升用户体验。

def __repr__(self):
    return 'MyClass #%d' % (self.id,)

撰写回答