de acuerdo con @kriss, @Noctis y @Carson. más color de mí:
class X: pass
y class X(): pass
son sinónimos de clases clásicos mientras class X(object): pass
es para clases de nuevo estilo, como se puede ver aquí:
>>> class X:pass
...
>>> class Y(): pass
...
>>> class Z(object): pass
...
>>>
>>> type(X), type(Y), type(Z)
(<type 'classobj'>, <type 'classobj'>, <type 'type'>)
vistazo a la Linky proporcionada por @kriss para más detalles sobre las diferencias. lo que no es válido en Python 3 es el concepto de la clase clásica ... la razón es porque las clases clásicas han quedado obsoletas. las tres expresiones idiomáticas crean solo clases de estilo nuevo en cualquier 3.x:
>>> class X:pass
...
>>> class Y(): pass
...
>>> class Z(object): pass
...
>>>
>>> type(X), type(Y), type(Z)
(<class 'type'>, <class 'type'>, <class 'type'>)
¿Qué significa esto? si está codificando en Python 2, intente utilizar las clases de estilo nuevo tanto como sea posible. de esta manera, ya ha incorporado su ruta de migración. además las clases de estilo nuevo ofrecen más características que las clases clásicas. (Esto es algo subjetivo, pero si sus clases [clásicas] son relativamente simples, entonces es posible que no necesite hacer nada para que funcionen en Python 3.)
No válido para 3.X –
@Noctis - what no es válido para 3.x? El viejo estilo? La diferencia entre viejo/nuevo? – phkahler
Heredar de 'Objeto' es el comportamiento predeterminado para Python 3.x –