Middle
Ką daro metodas new Python kalbos kontekste?
sobes.tech AI
Atsakymas iš AI
__new__ - tai klasės metodas, atsakingas už naujo klasės egzemplioriaus kūrimą. Jis kviečiamas prieš __init__ ir nustato, kuris objektas bus grąžintas. Dažniausiai naudojamas kuriant unikalius objektus (Singleton) arba nekintamo tipo objektus (pvz., tuple arba str).
class Singleton:
_instance = None
def __new__(cls):
# Patikrina, ar jau egzistuoja egzempliorius
if cls._instance is None:
# Jei ne, sukuria jį deleguodamas kūrimą tėvų klasei (object)
cls._instance = super().__new__(cls)
# Grąžina esamą arba ką tik sukurtą egzempliorių
return cls._instance
# Pavyzdžiai naudojimo
s1 = Singleton()
s2 = Singleton()
# Laukiamas rezultatas: True
print(s1 is s2)
Palyginimas tarp __new__ ir __init__:
-
__new__:- Statinė metodas (pirmas argumentas
cls). - Kviečiamas prieš egzemplioriaus kūrimą.
- Grąžina sukurtą egzempliorių.
- Statinė metodas (pirmas argumentas
-
__init__:- Egzemplioriaus metodas (pirmas argumentas
self). - Kviečiamas po egzemplioriaus kūrimo.
- Negrąžina reikšmių (implicitiai grąžina
None). - Naudojamas kuriant naujo objekto atributus.
- Egzemplioriaus metodas (pirmas argumentas