Я усвідомлюю, що це давнє запитання, але варто зазначити, що навіть у python 3 ці дві речі - не зовсім одне і те ж.
Якщо ви явно успадковуєте від object, те, що ви насправді робите, це успадковувати незалежно від builtins.object того, на що це вказує в той момент.
Тому я міг би мати якийсь (дуже дурний) модуль, який з якихось причин замінює об’єкт. Цей перший модуль ми будемо називати "newobj.py":
import builtins
old_object = builtins.object
class new_object(old_object):
def __init__(self, *args, **kwargs):
super(new_object, self).__init__(*args, **kwargs)
self.greeting = "Hello World!"
builtins.object = new_object
Тоді в якомусь іншому файлі ("klasses.py"):
class Greeter(object):
pass
class NonGreeter:
pass
Потім у третьому файлі (який ми фактично можемо запустити):
import newobj, klasses
greeter = klasses.Greeter()
print(greeter.greeting)
non_greeter = klasses.NonGreeter()
print(non_greeter.greeting)
Отже, ви можете бачити, що у випадку, коли він явно успадковує об’єкт, ми отримуємо іншу поведінку, ніж там, де ви дозволяєте неявне успадкування.