栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Zope:无法在属性装饰器下访问REQUEST

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Zope:无法在属性装饰器下访问REQUEST

property
装饰只适用于
新的风格 类;
也就是说,继承自的类
object
REQUEST
另一方面,获取(通过属性访问使您可以访问全局对象)是非常“老套”的python,两者不能很好地协同工作,因为
property

忽略 了获取
REQUEST
对象所需的获取包装器。


Zope有自己的

property
类似方法,可以在新型类之前进行修饰,而装饰器
property
称为
ComputedAttribute
,实际上可以在
property
装饰器和新类上进行许多年的修饰。但是,
ComputedAttribute
-wrapped函数确实知道如何与
Acquisition
-wrapped对象一起工作。

您可以

ComputedAttibute
property
装饰器一样使用:

from ComputedAttribute import ComputedAttributeclass SomeClass():       @ComputedAttribute    def someProperty(self):        return 'somevalue'

ComputedAttribute
包装函数也可以用包装的水平,这是我们需要采集的包装打交道时进行配置。
ComputedAttribute
在这种情况下,您不能将用作装饰器:

class SomeClass():       def somevalue(self):        return self.REQUEST    somevalue = ComputedAttribute(somevalue, 1)

定义一个新函数来为我们做装饰是很容易的:

from ComputedAttribute import ComputedAttributedef computed_attribute_decorator(level=0):    def computed_attribute_wrapper(func):        return ComputedAttribute(func, level)    return computed_attribute_wrapper

将其放在实用程序模块中的某个位置,然后可以将其用作可调用的修饰符,以将某些内容标记为“采集感知”属性:

class SomeClass():     @computed_attribute_decorator(level=1)    def somevalue(self):        return self.REQUEST

请注意,与不同

property
ComputedAttribute
只能用于吸气剂;不支持设置器或删除器。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/625787.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号