You might misunderstood the issue. Sorry if I'm not clear. In py3k, old-style class is removed. So when we write "class Foo: pass" in Python 3, a new style class Foo is defined, which is equivalent to "class Foo(object): pass" in Python 2.x. Note that this is a difference between py3k and Python 2.x and not related to the introduction of new-style class in Python 2.2.

For example, try the following code:

class Foo: pass
a = Foo()
b = type(a)()

It will run in Python 3 but raise exception in Python 2, which means in Python 2 'a' is not an 'object'(instance of new style class) but an 'instance'(instance of old style class).