Sobes.tech
Middle

Mit csinál a new metódus a Python nyelv kontextusában?

sobes.tech MI

Válasz az MI-től

__new__ - ez egy osztálymetódus, amely felelős az osztály új példányának létrehozásáért. Az __init__ előtt hívódik, és meghatározza, melyik objektum kerül visszaadásra. Főként egyedi objektumok (Singleton) vagy változtathatatlan típusú objektumok (például tuple vagy str) létrehozására használják.

class Singleton:
    _instance = None

    def __new__(cls):
        # Ellenőrzi, létezik-e már példány
        if cls._instance is None:
            # Ha nem, létrehozza, delegálva a létrehozást a szülőosztálynak (object)
            cls._instance = super().__new__(cls)
        # Visszaadja a létező vagy épp létrehozott példányt
        return cls._instance

# Használati példák
s1 = Singleton()
s2 = Singleton()

# Várt eredmény: True
print(s1 is s2)

__new__ és __init__ összehasonlítása:

  • __new__:

    • Statikus metódus (első argumentuma cls).
    • Mielőtt a példány létrejönne, meghívódik.
    • Visszaadja a létrehozott példányt.
  • __init__:

    • Példánymetódus (első argumentuma self).
    • A példány létrehozása után hívódik.
    • Nem ad vissza értéket (implicit módon None-t ad vissza).
    • Az objektum attribútumainak inicializálására használják.