On Fri, 17 Aug 2012 04:50:43 -0700, Richard Thomas wrote: > On Thursday, 16 August 2012 19:49:43 UTC+2, Steven D'Aprano wrote: >> On Thu, 16 Aug 2012 10:03:51 -0700, Richard Thomas wrote: >> >> > class Foo(object): >> > def __new__(cls, arg): >> > if isinstance(arg, list): >> > cls = FooList >> > elif isinstance(arg, dict): >> > cls = FooDict >> > return object.__new__(cls, arg) >> > >> > class FooList(Foo, list): >> > pass >> > >> > class FooDict(Foo, dict): >> > pass >> >> >> Did you actually try your code? >> >> > I rarely test code. I'm confident in, however undeserved the confidence. > :) In this case that's not an error I've ever seen before. Obvious easy > fix: > > return cls.__new__(cls, arg)
It might be easy, but it's obviously wrong. py> sys.setrecursionlimit(10) py> x = Foo([]) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 7, in __new__ File "<stdin>", line 7, in __new__ File "<stdin>", line 7, in __new__ File "<stdin>", line 7, in __new__ File "<stdin>", line 7, in __new__ File "<stdin>", line 7, in __new__ File "<stdin>", line 7, in __new__ RuntimeError: maximum recursion depth exceeded > Incidentally when I reply to your posts through the groups.google.com > interface it inserts a blank quoted line between each pair of lines. My > first thought was that it was a line endings bug with Google's app but > in retrospect that seems very likely to have been fixed years ago. Any > ideas? Makes you think that Google is interested in fixing the bugs in their crappy web apps? They have become as arrogant and as obnoxious as Microsoft used to be. -- Steven -- http://mail.python.org/mailman/listinfo/python-list