0

是否 declarePrivate() 等。人。Zope 2 风格的访问控制声明有任何现代 Python 语法方法装饰器吗?

例如

class EncryptedField(StringField):
    """
    """
    security = ClassSecurityInfo()

    # Something more nice here? like @private?
    security.declarePrivate('get')

    def get(self, instance, **kwargs):
        value = ObjectField.get(self, instance, **kwargs)
        if getattr(self, 'raw', False):
            return value
4

1 回答 1

1

不,我们仍然坚持这种语法。

它们不能轻易转换为装饰器,因为它们是类级别的声明,实际上并未附加到方法上。您需要在调用框架上玩一些讨厌的技巧才能返回到类声明和security对象以使其工作。

因此,有一个步骤security是处理对象以将声明转换为 Zope2 识别的类属性;这一步现在由原型registerType调用自动处理。

于 2012-07-11T06:24:51.990 回答