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.
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:
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
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
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.
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)
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!