In Python2, declaring object as the base class makes the class a new-style class. Otherwise, it is a "classic" class. Among the differences are that
- Properties only work with new-style classes 
- new-style classes have the - mromethod
 
- new-style classes have many attributes that classic classes lack - In [288]: class Foo: pass
In [289]: dir(Foo) 
Out[289]: ['__doc__', '__module__']
In [290]: class Bar(object): pass
In [291]: dir(Bar) 
Out[291]:  ['__class__',  '__delattr__',     '__dict__',  '__doc__',  '__format__',  '__getattribute__',     '__hash__',  '__init__',  '__module__',  '__new__',  '__reduce__',     '__reduce_ex__',  '__repr__',  '__setattr__',  '__sizeof__',     '__str__',  '__subclasshook__',  '__weakref__']
 
Classic classes are retained in Python2 only for backwards compatibility. All custom classes you define should be made new-style.
In Python3, all classes are new-style, so it need not be explicitly declared there.