欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python類屬性的延遲計算

 更新時間:2016年10月22日 10:15:09   作者:j_hao104  
這篇文章主要為大家詳細介紹了Python類屬性的延遲計算,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

優(yōu)點

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

實現

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

>>> c = Circle(2)
>>> print c.area
Computing area
12.5663706144
>>> print c.area
12.5663706144

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

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

相關文章

  • python排序算法之選擇排序

    python排序算法之選擇排序

    這篇文章主要介紹了python排序算法之選擇排序,選擇排序表示從無序的數組中,每次選擇最小或最大的數據,從無序數組中放到有序數組的末尾,以達到排序的效果,需要的朋友可以參考下
    2023-04-04
  • Python實現通過繼承覆蓋方法示例

    Python實現通過繼承覆蓋方法示例

    這篇文章主要介紹了Python實現通過繼承覆蓋方法,結合實例形式分析了Python面向對象程序設計中采用子類覆蓋父類同名方法相關操作技巧,需要的朋友可以參考下
    2018-07-07
  • python TKinter彈出式菜單的實例方法

    python TKinter彈出式菜單的實例方法

    在本篇文章里小編給大家整理了一篇關于python TKinter彈出式菜單的實例方法及相關代碼,有需要的朋友們可以學習下。
    2021-10-10
  • 淺析Python是如何實現集合的

    淺析Python是如何實現集合的

    之前我們介紹過字典的實現原理,它底層是基于哈希表實現的,而集合也是如此。本次我們來聊一下 Python 的集合是怎么實現的,希望對大家有所幫助
    2022-12-12
  • Python練習之操作MySQL數據庫

    Python練習之操作MySQL數據庫

    這篇文章主要介紹了Python練習之操作MySQL數據庫,文章通過如何創(chuàng)建MySQL數據表?如何向MySQL表中插入數據?如何查詢MySQL中的數據?的三個問題展開了詳細的內容介紹
    2022-06-06
  • 簡析Python的閉包和裝飾器

    簡析Python的閉包和裝飾器

    這篇文章主要為大家詳細介紹了Python的閉包和裝飾器,何為閉包?何為裝飾器?感興趣的小伙伴們可以參考一下
    2016-02-02
  • python定時任務apscheduler的詳細使用教程

    python定時任務apscheduler的詳細使用教程

    APScheduler的全稱是Advanced?Python?Scheduler,它是一個輕量級的?Python定時任務調度框架,下面這篇文章主要給大家介紹了關于python定時任務apscheduler的詳細使用教程,需要的朋友可以參考下
    2022-02-02
  • python 內置模塊詳解

    python 內置模塊詳解

    模塊是一個保存了Python代碼的文件。模塊能定義函數,類和變量。模塊里也能包含可執(zhí)行的代碼,今天我們就來詳細探討下python內置的一些常用模塊
    2019-01-01
  • Python使用future處理并發(fā)問題方案詳解

    Python使用future處理并發(fā)問題方案詳解

    從Python3.2引入的concurrent.futures模塊,Python2.5以上需要在pypi中安裝futures包。future指一種對象,表示異步執(zhí)行的操作。這個概念的作用很大,是concurrent.futures模塊和asyncio包的基礎
    2023-02-02
  • Python爬蟲采集微博視頻數據

    Python爬蟲采集微博視頻數據

    這篇文章主要介紹了利用Python爬蟲采集微博的視頻數據,文中有非常詳細的代碼示例,對正在學python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-12-12

最新評論