Someone pasted the original version of the following code snippet on #python today. I started investigating why the new-style class didn't work as expected, and found that at least some instances of new-style classes apparently don't return true for PyInstance_Check, which causes a problem in PySequence_Check, since it will only do an attribute lookup for instances.

Things probably shouldn't be this way. Should I go to python-dev with this?

Demonstration snippet:

args={'a':0}

class Args(object):
    def __getattr__(self,attr):
        print "__getattr__:", attr
        return getattr(args,attr)

class ClassicArgs:
    def __getattr__(self, attr):
        print "__getattr__:", attr
        return getattr(args, attr)

if __name__ == '__main__':
    c = ClassicArgs()
    i = c.__iter__()
    print i
    i = iter(c)
    print i

    a = Args()
    i = a.__iter__()
    print i
    i = iter(a)
    print i
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to