Claudio Grondi wrote: > In the process of learning about some deeper details of Python I am > curious if it is possible to write a 'prefix' code assigning to a and b > something special, so, that Python gets trapped in an endless loop in a > line with: > > if a==b: print 'OK' > > I mean, it would be of much help to me on my way to understanding Python > to know how such prefix code leading to an endless loop can look like > and if it is eventually not possible to write such code, to know why it > is not possible? > > My own first rough idea was to create generators which never end and use > them in the '==' comparison, but I have not well understood how to write > and use generators yet, so I expect from studying this special case to > come to some enlightenment. > Well, you could try this:
>>> class thing: ... def __eq__(self, other): ... return other == self ... >>> a = thing() >>> b = thing() >>> a == b Traceback (most recent call last): File "<stdin>", line 1, in ? File "<stdin>", line 3, in __eq__ File "<stdin>", line 3, in __eq__ File "<stdin>", line 3, in __eq__ ... File "<stdin>", line 3, in __eq__ File "<stdin>", line 3, in __eq__ RuntimeError: maximum recursion depth exceeded >>> Was that what you meant? Or something more like: >>> class thing: ... def __eq__(self, other): ... import time; time.sleep(1000000) ... >>> a = thing() >>> b = thing() >>> a == b regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC www.holdenweb.com PyCon TX 2006 www.python.org/pycon/ -- http://mail.python.org/mailman/listinfo/python-list