Middle
Co dělá metoda new v kontextu jazyka Python?
sobes.tech AI
Odpověď od AI
__new__ - je metoda třídy, která je zodpovědná za vytvoření nového instance třídy. Je volána před __init__ a určuje, jaký objekt bude vrácen. Používá se především k vytváření unikátních objektů (Singleton) nebo neměnných typů (například tuple nebo str).
class Singleton:
_instance = None
def __new__(cls):
# Kontrola, zda již instance existuje
if cls._instance is None:
# Pokud ne, vytvoří ji delegováním tvorby rodičovské třídě (object)
cls._instance = super().__new__(cls)
# Vrací existující nebo právě vytvořenou instanci
return cls._instance
# Příklady použití
s1 = Singleton()
s2 = Singleton()
# Očekávaný výsledek: True
print(s1 is s2)
Porovnání __new__ a __init__:
-
__new__:- Statická metoda (první argument je
cls). - Volá se před vytvořením instance.
- Vrací vytvořenou instanci.
- Statická metoda (první argument je
-
__init__:- Metoda instance (první argument je
self). - Volá se po vytvoření instance.
- Nevrací žádné hodnoty (implicitně vrací None).
- Používá se k inicializaci atributů vytvořeného objektu.
- Metoda instance (první argument je