Middle
426
Čo robí metóda new v kontexte jazyka Python?
Odpoveď od AI
sobes.tech AI
__new__ - je metóda triedy, ktorá je zodpovedná za vytvorenie nového inštancie triedy. Je volaná pred __init__ a určuje, aký objekt bude vrátený. Používa sa hlavne na vytváranie jedinečných objektov (Singleton) alebo objektov nemenného typu (napríklad tuple alebo str).
class Singleton:
_instance = None
def __new__(cls):
# Kontroluje, či už inštancia existuje
if cls._instance is None:
# Ak nie, vytvorí ju delegovaním tvorby rodičovskej triede (object)
cls._instance = super().__new__(cls)
# Vráti existujúcu alebo práve vytvorenú inštanciu
return cls._instance
# Príklady použitia
s1 = Singleton()
s2 = Singleton()
# Očakávaný výsledok: True
print(s1 is s2)
Porovnanie __new__ a __init__:
-
__new__:- Statická metóda (prvý argument je
cls). - Volá sa pred vytvorením inštancie.
- Vráti vytvorenú inštanciu.
- Statická metóda (prvý argument je
-
__init__:- Metóda inštancie (prvý argument je
self). - Volá sa po vytvorení inštancie.
- Nevracia hodnoty (implicitne vracia None).
- Používa sa na inicializáciu atribútov vytvoreného objektu.
- Metóda inštancie (prvý argument je