2012-07-11 3 views
0

declarePrivate() al. Zope 2 스타일의 접근 제어 선언은 현대의 파이썬 구문 메소드 데코레이터를 가지고 있습니까?파이썬 장식 자로 ClassSecurityInfo.declarePrivate() 등

예.

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 호출에 의해 처리됩니다.