Is types.InstanceType no longer valid with Python 2.2
Roeland Rengelink
r.b.rigilink at chello.nl
Fri Jan 4 18:24:10 EST 2002
More information about the Python-list mailing list
Fri Jan 4 18:24:10 EST 2002
- Previous message (by thread): Is types.InstanceType no longer valid with Python 2.2
- Next message (by thread): Is types.InstanceType no longer valid with Python 2.2
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Skip Montanaro wrote: > [snip] > > How can foo be a classic class with no bases, f1 be both an instance of foo > and of object, but foo not be a subclass of object? Just to pull all the > bits together in a simple example, starting from a fresh interpreter prompt: > > >>> class foo: pass > ... > >>> f1 = foo() > >>> f1.__class__ > <class __main__.foo at 0x821b964> > >>> f1.__class__.__bases__ > () > >>> isinstance(f1, foo) > 1 > >>> isinstance(f1, object) > 1 > >>> issubclass(foo, object) > 0 > > I thought I understood this stuff, but my brain is about to explode, so I'll > have to stop here. > That surprised me a lot too. However, I noticed that: >>> class foo:pass ... >>> isinstance(foo(), object) 1 >>> issubclass(foo, object) 0 >>> issubclass(type(foo()), object) 1 >>> import types >>> issubclass(types.InstanceType, object) 1 >>> types.InstanceType.__bases__ (<type 'object'>,) It may be that foo() appears to be an instance of object because type(foo()) is a subclass of object. not because object is some sort of hidden baseclass of foo. The surprise then, comes from type(foo()) != foo for old style classes. Since one of the results of healing the type class dichotomy would be type(foo()) == foo, and hence isinstance(A(), B) == issubclass(type(A()), B), I have halfway convinced myself that it does make sense after all. Hope this helps, Roeland -- r.b.rigilink at chello.nl "Half of what I say is nonsense. Unfortunately I don't know which half"
- Previous message (by thread): Is types.InstanceType no longer valid with Python 2.2
- Next message (by thread): Is types.InstanceType no longer valid with Python 2.2
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list