In Python2 questo dichiara Table
essere un new-style class (in contrasto con la classe "classico"). In Python3 tutte le classi sono classi di nuovo stile, quindi non è più necessario.
Le nuove classi di stile hanno alcuni attributi speciali che mancano alle classi classiche.
class Classic: pass
class NewStyle(object): pass
print(dir(Classic))
# ['__doc__', '__module__']
print(dir(NewStyle))
# ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
Inoltre, properties e super non funzionano con le classi classiche.
In Python2 è una buona idea rendere tutte le classi classi di nuovo stile. (Anche se un sacco di classi nella libreria standard sono ancora corsi classici, per il bene di backward-compatibilità.)
In generale, in una dichiarazione come
class Foo(Base1, Base2):
Foo
è essere dichiarata come una classe ereditato dalle classi di base Base1
e Base2
.
object
è la madre di tutte le classi in Python. È una classe di nuovo stile, quindi ereditare da object
rende una classe di nuovo stile Table
.
possibile duplicato di [Classi vecchio stile e nuovo stile in Python] (http://stackoverflow.com/questions/54867/old-style-and-new-style-classes-in-python) – JBernardo