2012-07-11 52 views
0

DeclarePrivate()et。人。 Zope 2風格的訪問控制聲明有任何現代的Python語法方法裝飾器?ClassSecurityInfo.declarePrivate()等作爲Python裝飾器

E.g.

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 

回答

1

不,我們仍然堅持這種語法。

它們不能很容易地轉換爲裝飾器,因爲它們是一個類級聲明,實際上並沒有附加到方法上。你需要使用調用框架來玩弄討厭的技巧,以回到類聲明和security對象來完成這項工作。

因此,有一個步驟處理security對象以將聲明轉換爲Zope2可識別的類屬性;這一步是這幾天由原型registerType自動照顧的呼叫。