Saya menyadari bahwa ini adalah pertanyaan lama, tetapi perlu dicatat bahwa bahkan di python 3 kedua hal ini tidak persis sama.
Jika Anda secara eksplisit mewarisi dari object, apa yang sebenarnya Anda lakukan adalah mewarisi dari builtins.object apa pun yang menunjuk pada saat itu.
Oleh karena itu, saya dapat memiliki beberapa modul (sangat aneh) yang menimpa objek karena beberapa alasan. Kami akan menyebut modul pertama ini "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
Kemudian di beberapa file lain ("klasses.py"):
class Greeter(object):
pass
class NonGreeter:
pass
Kemudian di file ketiga (yang sebenarnya dapat kita jalankan):
import newobj, klasses
greeter = klasses.Greeter()
print(greeter.greeting)
non_greeter = klasses.NonGreeter()
print(non_greeter.greeting)
Jadi Anda dapat melihat bahwa, dalam kasus di mana ia secara eksplisit mewarisi dari objek, kami mendapatkan perilaku yang berbeda dari yang Anda izinkan dengan pewarisan implisit.