Sobes.tech
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.
  • __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.