Sobes.tech
Middle

Šta radi metoda new u kontekstu jezika Python?

sobes.tech АИ

Одговор од АИ

__new__ - metoda klase koja je odgovorna za kreiranje novog primera klase. Poziva se pre __init__ i određuje koji će objekat biti vraćen. Uglavnom se koristi za kreiranje jedinstvenih objekata (Singleton) ili objekata nemutabilnog tipa (kao što su tuple ili str).

class Singleton:
    _instance = None

    def __new__(cls):
        # Proverava da li već postoji primerak
        if cls._instance is None:
            # Ako ne, kreira ga delegiranjem kreiranja roditeljskom klasu (object)
            cls._instance = super().__new__(cls)
        # Vraća postojeći ili upravo kreirani primerak
        return cls._instance

# Primeri korišćenja
s1 = Singleton()
s2 = Singleton()

# Očekivani rezultat: True
print(s1 is s2)

Poređenje __new__ i __init__:

  • __new__:

    • Statička metoda (prvi argument je cls).
    • Poziva se pre kreiranja primera.
    • Vraća kreirani primerak.
  • __init__:

    • Metoda primera (prvi argument je self).
    • Poziva se posle kreiranja primera.
    • Ne vraća vrednosti (implicitno vraća None).
    • Koristi se za inicijalizaciju atributa kreiranog objekta.