在Python 2.7中使用repr和super。`super()。\uu repr\uu` vs`repr(super())`

2024-03-29 14:36:40 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:为什么repr(super(class, thing))与{}不同?在

我遇到了一些我觉得很奇怪的事情,如果有人能解释一下为什么这样做会很好。在

我的问题是关于repr是如何工作的

class MyInt(int):
    pass

one = MyInt(1)
sup = super(MyInt, one)

>>> repr(sup)

"<super: <class 'MyInt'>, <MyInt object>>"

同时

>>> sup.__repr__()

'1'

第二个是我期望从第一个得到的(是的,每种情况下引用的都是不同的)。为什么这些病例不同?我以为repr(x)刚叫了x.__repr__。在


据我所知,super为超级类的方法提供了一个API,而不是超级类本身。所以在我看来,我的sup有两个__repr__方法,一个由repr调用,另一个以__repr__的名字命名。如果你能深入了解这里的情况,我会很感激的。在


Tags: 方法apiobject情况pass名字事情one