Middle
Python tilida new metodining kontekstda nima qilishi?
sobes.tech AI
AIdan javob
__new__ - bu sinfning yangi nusxasini yaratish uchun javobgar bo'lgan sinf usulidir. U __init__dan oldin chaqiriladi va qaysi obyekt qaytarilishini belgilaydi. Asosan yagona obyektlar (Singleton) yoki o'zgarmas turdagi obyektlar (masalan, tuple yoki str) yaratishda ishlatiladi.
class Singleton:
_instance = None
def __new__(cls):
# Mavjud nusxani tekshirish
if cls._instance is None:
# Agar mavjud bo'lmasa, uni yaratish, ota sinf (object) ga delegatsiya qilish
cls._instance = super().__new__(cls)
# Mavjud yoki yangi yaratilgan nusxani qaytarish
return cls._instance
# Foydalanish misollari
s1 = Singleton()
s2 = Singleton()
# Kutilyotgan natija: True
print(s1 is s2)
__new__ va __init__ taqqoslanishi:
-
__new__:- Statik metod (birinchi argument
cls). - Nusxa yaratilishidan oldin chaqiriladi.
- Yaratilgan nusxani qaytaradi.
- Statik metod (birinchi argument
-
__init__:- Nusxa yaratilgandan keyin chaqiriladi.
- Qiymat qaytarmaydi (implicit ravishda None).
- Yaratilgan obyektning atributlarini boshlash uchun ishlatiladi.