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.
- Statikus metódus (első argumentuma
-
__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.
- Példánymetódus (első argumentuma