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__
名称下。非常感谢能够深入了解这里发生的事情。