concordato con @kriss, @Noctis e @Carson. più colore da me:
class X: pass
e class X(): pass
sono sinonimi di classi classiche mentre class X(object): pass
è per classi di nuovo stile, come potete vedere qui:
>>> class X:pass
...
>>> class Y(): pass
...
>>> class Z(object): pass
...
>>>
>>> type(X), type(Y), type(Z)
(<type 'classobj'>, <type 'classobj'>, <type 'type'>)
sguardo al linky fornito da @kriss per maggiori dettagli sulle differenze. ciò che non è valido in Python 3 è il concetto della classe classica ... la ragione è perché le classi classiche sono state deprecate. tutti e tre gli idiomi creano solo classi di nuovo stile in qualsiasi 3.x:
>>> class X:pass
...
>>> class Y(): pass
...
>>> class Z(object): pass
...
>>>
>>> type(X), type(Y), type(Z)
(<class 'type'>, <class 'type'>, <class 'type'>)
cosa significa bottom-line? se stai codificando in Python 2, prova ad usare il più possibile le classi di nuovo stile. in questo modo, hai già creato il tuo percorso di migrazione. inoltre le lezioni di stile nuovo offrono più funzionalità rispetto alle classi classiche. (questo è un po 'soggettivo, ma se le tue classi [classiche] sono relativamente semplici, allora è possibile che tu non debba fare nulla per farle funzionare in Python 3.)
Non valido per 3.X –
@Noctis - cosa non è valido per 3.x? Il vecchio stile? La differenza tra vecchio/nuovo? – phkahler
Ereditare da 'Object' è il comportamento predefinito per Python 3.x –