いわゆるクラス属性の遅延計算とは、クラスの属性をプロパティとして定義し、アクセスされたときのみ計算され、アクセスされると結果がキャッシュされるので計算する必要がありません。毎回。遅延計算プロパティを構築する主な目的は、パフォーマンスを向上させることです
本題に入る前に、プロパティの使用法を理解して、プロパティへのアクセスをメソッド呼び出しに変換します。
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
area はメソッドとして定義されていますが、 @property を追加すると、c.area が直接実行され、プロパティとしてアクセスできることがわかります。
ここで、c.area が呼び出されるたびに計算されますが、これは CPU の無駄です。これは、遅延プロパティ
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「面積の計算」は area() で計算されるたびに出力され、c.area を 2 回連続して呼び出した後、「計算領域「を印刷します。」は 1 回だけ印刷されました。これは LazyProperty によるもので、一度呼び出される限り、その後何回呼び出してもカウントされません。
以上がPython の遅延初期化を使用してパフォーマンスを向上させる例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。