Middle
Co robi metoda new w kontekście języka Python?
sobes.tech AI
Odpowiedź od AI
__new__ - to metoda klasy odpowiedzialna za tworzenie nowego egzemplarza klasy. Jest wywoływana przed __init__ i określa, jaki obiekt zostanie zwrócony. Jest najczęściej używana do tworzenia unikalnych obiektów (Singleton) lub obiektów typu niemutowalnego (np. tuple lub str).
class Singleton:
_instance = None
def __new__(cls):
# Sprawdza, czy już istnieje egzemplarz
if cls._instance is None:
# Jeśli nie, tworzy go, delegując tworzenie do klasy nadrzędnej (object)
cls._instance = super().__new__(cls)
# Zwraca istniejący lub właśnie utworzony egzemplarz
return cls._instance
# Przykłady użycia
s1 = Singleton()
s2 = Singleton()
# Oczekiwany wynik: True
print(s1 is s2)
Porównanie __new__ i __init__:
-
__new__:- Metoda statyczna (pierwszy argument to
cls). - Wywoływana przed utworzeniem egzemplarza.
- Zwraca utworzony egzemplarz.
- Metoda statyczna (pierwszy argument to
-
__init__:- Metoda instancji (pierwszy argument to
self). - Wywoływana po utworzeniu egzemplarza.
- Nie zwraca wartości (domyślnie None).
- Używana do inicjalizacji atrybutów utworzonego obiektu.
- Metoda instancji (pierwszy argument to