Middle
Ko dara metode new Python valodas kontekstā?
sobes.tech AI
Atbilde no AI
__new__ - tas ir klasē metode, kas ir atbildīgs par jauna klases eksemplāra izveidi. Tas tiek izsaukts pirms __init__ un nosaka, kurš objekts tiks atgriezts. Parasti tas tiek izmantots, lai izveidotu unikālus objektus (Singleton) vai nemaināma tipa objektus (piemēram, tuple vai str).
class Singleton:
_instance = None
def __new__(cls):
# Pārbauda, vai jau eksistē instances
if cls._instance is None:
# Ja nē, izveido to, deleģējot izveidi vecākklasei (object)
cls._instance = super().__new__(cls)
# Atgriež esošo vai tikko izveidoto instances
return cls._instance
# Piemēri izmantošanai
s1 = Singleton()
s2 = Singleton()
# Sagaidāmais rezultāts: True
print(s1 is s2)
Salīdzinājums starp __new__ un __init__:
-
__new__:- Statiska metode (pirmais arguments
cls). - Izsauc pirms instances izveides.
- Atgriež izveidoto instances.
- Statiska metode (pirmais arguments
-
__init__:- Instances metode (pirmais arguments
self). - Izsauc pēc instances izveides.
- Neatgriež vērtības (implicīti atgriež
None). - To izmanto, lai inicializētu izveidotā objekta atribūtus.
- Instances metode (pirmais arguments