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