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__ və __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.
- Statik metod (ilk arqument
-
__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.
- Nümunə metodudur (ilk arqument