আমি বুঝতে পারি যে এটি একটি পুরানো প্রশ্ন, তবে এটি লক্ষণীয় যে অজগর 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
তারপরে অন্য কয়েকটি ফাইলে ("ক্লাস.পি"):
class Greeter(object):
pass
class NonGreeter:
pass
তারপরে তৃতীয় একটি ফাইলে (যা আমরা আসলে চালাতে পারি):
import newobj, klasses
greeter = klasses.Greeter()
print(greeter.greeting)
non_greeter = klasses.NonGreeter()
print(non_greeter.greeting)
সুতরাং আপনি দেখতে পাচ্ছেন যে, যেখানে বিষয়টি স্পষ্টভাবে বস্তু থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয়েছে, সেখানে আপনি যেহেতু অন্তর্নিহিত উত্তরাধিকারের অনুমতি দিচ্ছেন তার চেয়ে আমরা আলাদা আচরণ পাই।