国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python類屬性的延遲計算

2020-01-04 17:22:38
字體:
來源:轉載
供稿:網友

所謂類屬性的延遲計算就是將類的屬性定義成一個property,只在訪問的時候才會計算,而且一旦被訪問后,結果將會被緩存起來,不用每次都計算。

優點

構造一個延遲計算屬性的主要目的是為了提升性能

實現

 

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 valueimport mathclass 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類有是三個屬性半徑(radius)、面積(area)、周長(perimeter)。面積和周長的屬性被LazyProperty裝飾,下面來試試LazyProperty的魔法:

>>> c = Circle(2)>>> print c.areaComputing area12.5663706144>>> print c.area12.5663706144

在area()中每計算一次就會打印一次“Computing area”,而連續調用兩次c.area后“Computing area”只被打印了一次。這得益于LazyProperty,只要調用一次后,無論后續調用多少次都不會重復計算。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潮州市| 周宁县| 余姚市| 深水埗区| 玉门市| 苗栗市| 喀什市| 舞钢市| 阜康市| 舞阳县| 丰都县| 咸宁市| 革吉县| 滦南县| 麻栗坡县| 岚皋县| 吴忠市| 遂川县| 义乌市| 长顺县| 沅江市| 古浪县| 安徽省| 康乐县| 沂水县| 常德市| 万山特区| 无锡市| 阿鲁科尔沁旗| 许昌县| 临武县| 枣阳市| 额尔古纳市| 新乡市| 建平县| 汝城县| 郁南县| 仁寿县| 南江县| 雅江县| 揭阳市|