6

Question: Why is repr(super(class, thing)) different from super(class, thing).__repr__()?

I've come across something that I think is odd, would be great if someone has an explanation for why this works the way it does.

My question is about how repr works

class MyInt(int):
    pass

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

>>> repr(sup)

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

while

>>> sup.__repr__()

'1'

The second is what I expected to come from the first (yes, the quotes are different in each case). Why are these cases of repr different? I thought repr(x) just called x.__repr__.


As far as I know, super provides an API to the methods of the super class, rather than the super class itself. So it seems to me that my sup has two __repr__ methods, one which is called by the repr and one which is under the name __repr__. Would really appreciate some insight into what's going on here.

user27182
  • 200
  • 3
  • 9

0 Answers0