延迟评估的惰性访问器和其他工具。
lazyutils的Python项目详细描述
lazyutils为代码的延迟计算提供了一些简单的实用程序。
==
lazy decorator用延迟初始化定义了一个属性::
。代码::python
import math
from lazyutils import lazy
class vec:
def初始化(self,x,y):
self.x,self.y=x,y
@lazy
def幅度(self):
print('computing…)
return math.sqrt(self.x**2+self.y**2)
>;>v=vec(3,4)
>; 计算…
5.0
v.magnitude
42
lazy属性可以用于简化初始化大量或多个变量的对象的
初始化方法的实现,也可以用于延迟对象中可能不需要的潜在昂贵计算的
优化。生命周期。
delegation
=代码::python
from lazyutils import delegate_to
class arrow:
magnize=delegate_to('vector')
def_u init_u(self,vector,start=vec(0,0)):
self.vector=vector
self.start=start
now,“arrow”实例的“magnitude”属性委托给
`.vector.magnitude``。当一个
想要公开内部对象中的一些选定属性时,委托字段在类组合中很有用。delegate_to()
不加区别地处理属性和方法。
>;>;a=箭头(vec(6,8))
>;>;a.大小
计算…
10.0
我们可以使用alias()和readonly()函数为
属性创建简单的别名::
class myarrow(箭头):
abs-value=readonly('magnitude')
origin=alias('start')
这将公开另外两个属性:“abs-value”和“origin”。第一个是
只是“magnitude”属性的只读视图。第二个公开了对“start”属性的读和写访问。
lazy decorator用延迟初始化定义了一个属性::
。代码::python
import math
from lazyutils import lazy
class vec:
def初始化(self,x,y):
self.x,self.y=x,y
@lazy
def幅度(self):
print('computing…)
return math.sqrt(self.x**2+self.y**2)
>;>v=vec(3,4)
>;
5.0
v.magnitude
42
lazy属性可以用于简化初始化大量或多个变量的对象的
初始化方法的实现,也可以用于延迟对象中可能不需要的潜在昂贵计算的
优化。生命周期。
delegation
=代码::python
from lazyutils import delegate_to
class arrow:
magnize=delegate_to('vector')
def_u init_u(self,vector,start=vec(0,0)):
self.vector=vector
self.start=start
now,“arrow”实例的“magnitude”属性委托给
`.vector.magnitude``。当一个
想要公开内部对象中的一些选定属性时,委托字段在类组合中很有用。delegate_to()
不加区别地处理属性和方法。
>;>;a=箭头(vec(6,8))
>;>;a.大小
计算…
10.0
我们可以使用alias()和readonly()函数为
属性创建简单的别名::
class myarrow(箭头):
abs-value=readonly('magnitude')
origin=alias('start')
这将公开另外两个属性:“abs-value”和“origin”。第一个是
只是“magnitude”属性的只读视图。第二个公开了对“start”属性的读和写访问。