چرا type نمونه های مختلف از کلاس singleton با هم متفاوت هستند؟

پرسیده شده
فعالیت 988 روز پیش
دیده شده 411 بار
0

سلام

 من ۳ تا کلاس مختلف برای singleton نوشتم و از کلاس نمونه سازی کردم

زمانی که type نمونه ها رو print کردم نمونه ها type های مختلف داشتن

 

class Singleton:

    @classmethod
    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, '_instance'):
            cls._instance = super().__new__(cls)

        return cls._instance

s1 = Singleton()
s2 = Singleton()

print(type(s1))  # <class '__main__.Singleton'>
print(type(s2))  # <class '__main__.Singleton'>

print(id(s1) == id(s2))  # True

 

class Singleton:

    @classmethod
    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, '_instance'):
            cls._instance = super().__init__(*args, **kwargs)

        return cls._instance


s1 = Singleton()
s2 = Singleton()

print(type(s1))  # <class 'NoneType'>
print(type(s2))  # <class 'NoneType'>

print(id(s1) == id(s2))  # True

 

class Singleton:

    @classmethod
    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, '_instance'):
            cls._instance = super(*args, **kwargs)

        return cls._instance


s1 = Singleton()
s2 = Singleton()

print(type(s1))  # <class 'super'>
print(type(s2))  # <class 'super'>

print(id(s1) == id(s2))  # True

میشه در مورد اینکه چرا type ها تفاوت دارن یکم برام توضیح بدید.

ممنون

فایل پیوست

Mohsen Azizi
Mohsen Azizi

21 تیر 00

0
حذف شده

جواب استاد رمضان پور:

سلام
روش‌های دوم و سوم اصلا پیاده‌سازی سینگلتون نیست و اشتباه نوشته شدن. در مورد اینکه چرا اشتباست و چرا باید اینطوری بنویسیم توی جلسات آینده و سوالات آکادمی مفصل صحبت کردیم.

 

سوالات آکادمی مربوط به الگوی طراحی Singleton:

تاپیک: نحوه پیاده سازی سینگلتون برای کلاسی که دارای متد ــinit__ باشد

تاپیک: چرا super

تاپیک: تو کلاس متد __new__ در کلاس Singleton چه اتفاقی داره می افته؟

 

فایل پیوست

محمدعلی رضا

توسط

محمدعلی رضا

22 تیر 00

حذف شده
سلام مورد سوم پیاده سازی دقیقا کدی است که خود استاد داخل ویدیو پیاده سازی کرده و اگر اشتباه نکنم خودتونم تو این تاپیک: چرا super گفتید که این پیاده سازی مشکلی نداره.
Mohsen Azizi

22 تیر 00

0
حذف شده

سلاااااااااااااااااااام

جواب کامنت محسن جان:

بله استاد رمضان پور اول پیاده سازی سوم که تو این تاپیک نوشتید رو درس دادن و بعدا تو جلسات بعدی یا تو گروه فک کنم گفتن که پیاده سازی سینگلتون که تو ویدیو گفتن اشتباهه و درستش همون پیاده سازی اولی هست که نوشتید.

فایل پیوست

محمدعلی رضا

توسط

محمدعلی رضا

23 تیر 00