سلام
من ۳ تا کلاس مختلف برای 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ها تفاوت دارن یکم برام توضیح بدید.
ممنون