Heim > Backend-Entwicklung > Python-Tutorial > Die magischen Methoden von Python

Die magischen Methoden von Python

Patricia Arquette
Freigeben: 2024-12-31 09:03:14
Original
434 Leute haben es durchsucht

Python

1 -> __new__(cls) Methode

Die Methode __new__ wird aufgerufen, wenn in Python ein neues Objekt erstellt wird. Es ist für die Erstellung und Rückgabe der neuen Instanz der Klasse verantwortlich. Diese Methode wird normalerweise verwendet, wenn Sie die Objekterstellung anpassen möchten, z. B. für Singleton-Muster, Caching oder Speicherverwaltung.

Wann heißt __new__?

Die Methode __new__ wird vor __init__ aufgerufen und zum Erstellen des neuen Objekts verwendet. Hier ist die typische Reihenfolge der Ereignisse beim Erstellen eines neuen Objekts:

  1. __new__: Erstellt das Objekt (Speicherzuweisung).
  2. __init__: Initialisiert das Objekt (Einrichten von Attributen).

Anwendungsfälle für __new__:

  1. Singleton-Muster: Das Singleton-Muster stellt sicher, dass nur eine Instanz einer Klasse existiert. In diesem Fall prüft __new__, ob eine Instanz bereits existiert und verwendet sie wieder, anstatt eine neue zu erstellen.
   class Singleton:
       _instance = None

       def __new__(cls):
           if cls._instance is None:
               cls._instance = super(Singleton, cls).__new__(cls)
           return cls._instance

   s1 = Singleton()
   s2 = Singleton()
   print(s1 is s2)  # True, both are the same instance
Nach dem Login kopieren
  1. Objekte zwischenspeichern: Wenn Sie Objekte basierend auf bestimmten Bedingungen zwischenspeichern möchten, können Sie mit __new__ prüfen, ob ein Objekt bereits vorhanden ist (z. B. in einem Wörterbuch), bevor Sie ein neues erstellen. Dies kann zur Optimierung der Speichernutzung beitragen.
   class CachedObject:
       _cache = {}

       def __new__(cls, value):
           if value in cls._cache:
               return cls._cache[value]
           obj = super().__new__(cls)
           cls._cache[value] = obj
           return obj

   obj1 = CachedObject("hello")
   obj2 = CachedObject("hello")
   print(obj1 is obj2)  # True, the same object is reused
Nach dem Login kopieren
  1. Speicherverwaltung:
    Wenn Sie die Speicherzuweisung von Objekten steuern möchten (z. B. um die Speichernutzung zu optimieren oder große Objekte zu verwalten), können Sie mit __new__ anpassen, wie Objekte erstellt werden.

  2. Unveränderliche Objekte:
    __new__ wird oft mit unveränderlichen Objekten wie Tupeln und Strings verwendet. Wenn Sie beispielsweise ein benutzerdefiniertes unveränderliches Objekt erstellen möchten, überschreiben Sie __new__, um sicherzustellen, dass es ordnungsgemäß erstellt wird.

   class MyTuple(tuple):
       def __new__(cls, *args):
           return super().__new__(cls, args)

   t = MyTuple(1, 2, 3)
   print(t)  # (1, 2, 3)
Nach dem Login kopieren

Zusammenfassend:

  • __new__ wird aufgerufen, wenn ein Objekt erstellt wird, und ist für die Rückgabe der Instanz der Klasse verantwortlich.
  • Es ist nützlich zum Optimieren der Objekterstellung, zum Implementieren von Mustern wie Singleton, zum Verwalten des Objekt-Caching oder sogar zum Anpassen der Speicherzuweisung Prozess.

Das obige ist der detaillierte Inhalt vonDie magischen Methoden von Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage