Python Language Clases de estilo nuevo vs. estilo antiguo


Ejemplo

Python 2.x 2.2.0

Las clases de nuevo estilo se introdujeron en Python 2.2 para unificar clases y tipos . Heredan del tipo de object nivel superior. Una clase de nuevo estilo es un tipo definido por el usuario y es muy similar a los tipos incorporados.

# new-style class
class New(object):
    pass

# new-style instance
new = New()

new.__class__
# <class '__main__.New'>
type(new)
# <class '__main__.New'>
issubclass(New, object)
# True

Las clases de estilo antiguo no heredan de object . Las instancias de estilo antiguo siempre se implementan con un tipo de instance incorporado.

# old-style class
class Old:
    pass

# old-style instance
old = Old()

old.__class__
# <class __main__.Old at ...>
type(old)
# <type 'instance'>
issubclass(Old, object)
# False
Python 3.x 3.0.0

En Python 3, se eliminaron las clases de estilo antiguo.

Las clases de nuevo estilo en Python 3 heredan implícitamente del object , por lo que ya no es necesario especificar MyClass(object) .

class MyClass:
    pass

my_inst = MyClass()

type(my_inst)
# <class '__main__.MyClass'>
my_inst.__class__
# <class '__main__.MyClass'>
issubclass(MyClass, object)
# True