Die sogenannte verzögerte Berechnung von Klassenattributen besteht darin, die Attribute der Klasse als Eigenschaft zu definieren, die nur bei Zugriff berechnet wird. Sobald darauf zugegriffen wird, wird das Ergebnis zwischengespeichert, ohne dass dies erforderlich ist Mach es jedes Mal. Alles berechnet. Der Hauptzweck der Erstellung einer Eigenschaft für verzögerte Berechnungen besteht darin, die Leistung zu verbessern.
Wie Sie sehen können, kann c.area nach dem Hinzufügen von @property direkt ausgeführt und als Eigenschaft aufgerufen werden, obwohl der Bereich als Methode definiert ist. Jetzt kommt das Problem, wenn c.area einmal aufgerufen wird. Es ist eine Verschwendung von CPU. Das ist die Code-Implementierung der Lazy-Eigenschaft 🎜>class Circle(object): def init(self, radius): self.radius = radius @property def area(self): return 3.14 * self.radius ** 2 c = Circle(4) print c.radius print c.area
Beschreibung
class LazyProperty(object): def init(self, func): self.func = func def get(self, instance, owner): if instance is None: return self else: value = self.func(instance) setattr(instance, self.func.name, value) return value import math class Circle(object): def init(self, radius): self.radius = radius @LazyProperty def area(self): print 'Computing area' return math.pi * self.radius ** 2 @LazyProperty def perimeter(self): print 'Computing perimeter' return 2 * math.pi * self.radius
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Beispielen für die Verwendung der verzögerten Python-Initialisierung zur Verbesserung der Leistung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!