소위 클래스 속성의 지연 계산은 클래스의 속성을 속성으로 정의하는 것으로, 액세스할 때만 계산되며, 일단 액세스하면 결과가 캐시되어 매번 계산할 필요가 없습니다. .
장점
지연 계산 속성을 구성하는 주요 목적은 성능을 향상시키는 것입니다
업적
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
설명
지연 계산 데코레이터 클래스 LazyProperty를 정의합니다. Circle은 테스트에 사용되는 클래스입니다. Circle 클래스에는 반경, 면적, 둘레의 세 가지 속성이 있습니다. 면적과 둘레의 속성은 LazyProperty로 장식됩니다. LazyProperty의 마법을 사용해 보겠습니다.
>>> c = Circle(2) >>> print c.area Computing area 12.5663706144 >>> print c.area 12.5663706144
"계산 영역"은 Area()의 각 계산에 대해 한 번만 인쇄되지만 "계산 영역"은 c.area를 두 번 호출한 후에 한 번만 인쇄됩니다. 이는 LazyProperty로 인해 한 번 호출되면 이후에 몇 번 호출하더라도 다시 계산되지 않습니다.
위 글의 내용은 모두의 공부에 도움이 되길 바랍니다.