Sobes.tech
Middle

Python dilində new metodunun kontekstində nə edir?

sobes.tech Süni İntellekt

AI-dan cavab

__new__ - sinifin yeni nümunəsini yaratmaq üçün cavabdeh olan sinif metodudur. O, __init__-dən əvvəl çağırılır və hansı obyektin qaytarılacağını müəyyən edir. Əsasən unikal obyektlər (Singleton) və ya dəyişməz tipli obyektlər (məsələn, tuple və ya str) yaratmaq üçün istifadə olunur.

class Singleton:
    _instance = None

    def __new__(cls):
        # Mövcud nümunənin olub-olmadığını yoxlayır
        if cls._instance is None:
            # Əks halda, onu yaradaraq valideyn sinfə (object) yönəldir
            cls._instance = super().__new__(cls)
        # Mövcud və ya yeni yaradılmış nümunəni qaytarır
        return cls._instance

# İstifadə nümunələri
s1 = Singleton()
s2 = Singleton()

# Gözlənilən nəticə: True
print(s1 is s2)

__new____init__-in müqayisəsi:

  • __new__:

    • Statik metod (ilk arqument cls).
    • Nümunə yaradılmadan əvvəl çağırılır.
    • Yaradılmış nümunəni qaytarır.
  • __init__:

    • Nümunə metodudur (ilk arqument self).
    • Nümunə yaradıldıqdan sonra çağırılır.
    • Dəyər qaytarmır (qeyri-rəsmi olaraq None qaytarır).
    • Yaradılmış obyektin atributlarını başlatmaq üçün istifadə olunur.