class A(object):
def xx(self):
return 'xx'
class B(A):
def __repr__(self):
return 'ss%s' % self.xx
b = B()
print repr(b)
当我编写__repr__
方法时,我忘了拨打self.xx
。
为什么这些代码会导致RuntimeError: maximum recursion depth exceeded while getting the str of an object
。
我的英语很差,希望你们能理解这些。非常感谢你!
答案 0 :(得分:4)
这就是:
%s
self.xx
来电str(self.xx)
__str__
,因此会调用__repr__
。方法的__repr__
合并repr()
self
为<bound method [classname].[methodname] of [repr(self)]>
:
>>> class A(object):
... def xx(self):
... pass
...
>>> A().xx
<bound method A.xx of <__main__.A object at 0x1007772d0>>
>>> A.__repr__ = lambda self: '<A object with __repr__>'
>>> A().xx
<bound method A.xx of <A object with __repr__>>
__repr__
的{{1}}尝试使用self
所以你有一个无限循环。