class
cached_property
(object):
def__init__
(self, func, name=
none):
self.func = func
self.__doc__ =
getattr
(func,
'__doc__'
) self.name = name or func.__name__
def__get__
(self, instance, cls=
none):
if instance is
none
:return self
print
(self)
print
(self.func)
# function user.getworkyear
print
(instance)
# <__main__.user object
# self.func(instance) 相當於 getworkyear(user)
# 呼叫示例方法 getworkyear 把 自己傳進去
# getworkyear(self) = getworkyear(instance) = self.func(instance)
res = instance.__dict__[self.name]
= self.func(instance)
return res
class
user
(object):
def__init__
(self, age=0)
: self.age = age
@cached_property
defgetworkyear
(self)
:return
65- self.age
user = user(20)
print
(user.__dict__)
print
(user.getworkyear)
# 45
# print(user.getworkyear()) # error
print
(user.__dict__)
# print
(user.getworkyear)
# 45
<main.cached_property object at 0x000002a8d3462898>
<main.user object at 0x000002a8d34628d0>
4545
cached_property主要實現的功能是,user.getworkyear第一次會進行計算,計算完之後把例項user的__dict__[『getworkyear』]設定為計算後的值。下次讀值的時候會直接從__dict__[『getworkyear』]取結果,避免了多次計算。
使用限制:只能用於只帶預設引數的類
django rest framework快取應用
在我們web製作過程中進場使用到快取技術,那麼今天python中的一種簡單便捷的快取技術與大家分享 以下是在省 市 區 聯動的位址查詢做的快取處理 使用快取 省市區的資料是經常被使用者查詢使用的,而且資料基本不變化,所以我們可以將省市區資料進行快取處理,減少資料庫的查詢次數。在django rest...
WPF與緩動 四 弧形緩動
wpf與緩動 四 弧形緩動 周銀輝 弧形緩動就是其緩動曲線為一段圓弧,如何我們假設圓弧上的點的斜率為速度的話,那麼可以想像其速度的變化多麼具有戲劇性,其加速或減速來得很突然,與5次緩動差不多.參考以下 圓形緩動 protected override double getcurrentvaluecor...
深度緩紋理
create a texture object storing color glgentextures 1,m udepthtexid glbindtexture gl texture 2d,m udepthtexid gltexparameterf gl texture 2d,gl texture...