Middle
Šta radi metoda new u kontekstu jezika Python?
sobes.tech АИ
Одговор од АИ
__new__ - metoda klase koja je odgovorna za kreiranje novog primera klase. Poziva se pre __init__ i određuje koji će objekat biti vraćen. Uglavnom se koristi za kreiranje jedinstvenih objekata (Singleton) ili objekata nemutabilnog tipa (kao što su tuple ili str).
class Singleton:
_instance = None
def __new__(cls):
# Proverava da li već postoji primerak
if cls._instance is None:
# Ako ne, kreira ga delegiranjem kreiranja roditeljskom klasu (object)
cls._instance = super().__new__(cls)
# Vraća postojeći ili upravo kreirani primerak
return cls._instance
# Primeri korišćenja
s1 = Singleton()
s2 = Singleton()
# Očekivani rezultat: True
print(s1 is s2)
Poređenje __new__ i __init__:
-
__new__:- Statička metoda (prvi argument je
cls). - Poziva se pre kreiranja primera.
- Vraća kreirani primerak.
- Statička metoda (prvi argument je
-
__init__:- Metoda primera (prvi argument je
self). - Poziva se posle kreiranja primera.
- Ne vraća vrednosti (implicitno vraća None).
- Koristi se za inicijalizaciju atributa kreiranog objekta.
- Metoda primera (prvi argument je