Middle
Mida teeb meetod new Python keele kontekstis?
sobes.tech AI
Vastus AI-lt
__new__ - on klassi meetod, mis vastutab uue klassi eksemplari loomise eest. Seda kutsutakse enne __init__ ja see määrab, milline objekt tagastatakse. Seda kasutatakse peamiselt unikaalsete objektide (Singleton) või muutumatute tüüpide (näiteks tuple või str) loomiseks.
class Singleton:
_instance = None
def __new__(cls):
# Kontrollib, kas juba on eksemplar olemas
if cls._instance is None:
# Kui ei, siis loob selle, delegeerides loomise vanemklassile (object)
cls._instance = super().__new__(cls)
# Tagastab olemasoleva või just loodud eksemplari
return cls._instance
# Kasutusnäited
s1 = Singleton()
s2 = Singleton()
# Oodatav tulemus: True
print(s1 is s2)
Võrdlus __new__ ja __init__ vahel:
-
__new__:- Staatiline meetod (esimene argument on
cls). - Kutsutakse enne eksemplari loomist.
- Tagastab loodud eksemplari.
- Staatiline meetod (esimene argument on
-
__init__:- Eksemplari meetod (esimene argument on
self). - Kutsutakse pärast eksemplari loomist.
- Ei tagasta väärtusi (impliciti tagastab
None). - Kasutatakse loodud objekti atribuutide initsialiseerimiseks.
- Eksemplari meetod (esimene argument on