Sobes.tech
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.
  • __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.