在Python 2.7中使用repr和super。 `super().__ repr__` vs`repr(super())`

时间:2017-11-22 11:03:42

标签: python python-2.7 super internals repr

问题:为什么repr(super(class, thing))super(class, thing).__repr__()不同?

我遇到了一些我认为很奇怪的事情,如果有人解释为什么这样做会有效,那就太棒了。

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

class MyInt(int):
    pass

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

>>> repr(sup)

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

,而

>>> sup.__repr__()

'1'

第二个是我期望从第一个开始的(是的,在每种情况下引号都不同)。 为什么repr的这些案例有所不同?我认为repr(x)刚刚调用x.__repr__

据我所知,super为超类的方法提供了一个API,而不是超类本身。因此,在我看来,我的sup有两个__repr__方法,一个由repr调用,另一个在__repr__名称下。非常感谢能够深入了解这里发生的事情。

0 个答案:

没有答案