Sobes.tech
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.
  • __init__:

    • Nusxa yaratilgandan keyin chaqiriladi.
    • Qiymat qaytarmaydi (implicit ravishda None).
    • Yaratilgan obyektning atributlarini boshlash uchun ishlatiladi.