Bunun eski bir soru olduğunun farkındayım, ancak piton 3'te bile bu iki şeyin tamamen aynı şey olmadığını belirtmekte fayda var.
Açıkça miras object
alırsanız, gerçekte yaptığınız şey , o anda neyin işaret ettiğine bakılmaksızın miras almaktır builtins.object
.
Bu nedenle, bazı nedenlerden dolayı nesneyi geçersiz kılan (çok tuhaf) bir modüle sahip olabilirim. Bu ilk modüle "newobj.py" adını vereceğiz:
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
Sonra başka bir dosyada ("klasses.py"):
class Greeter(object):
pass
class NonGreeter:
pass
Sonra üçüncü bir dosyada (aslında çalıştırabiliriz):
import newobj, klasses
greeter = klasses.Greeter()
print(greeter.greeting)
non_greeter = klasses.NonGreeter()
print(non_greeter.greeting)
Dolayısıyla, açıkça nesneden miras alması durumunda, örtük kalıtıma izin verdiğiniz yerden farklı bir davranışla karşılaştığımızı görebilirsiniz.