Python의 장식 시스템. aClassObect.attribute
에 전화 할 때 사용자 지정 코드를 실행할 수 있다는 점이 좋습니다. 특히 속성을 설정할 때 데이터의 유효성 검사에 사용됩니다. 그러나 내가 원하지만, 찾을 수없는 한 가지는 존재하지 않는 특성을 설정할 때 사용자 지정 코드를 실행하는 방법입니다. 예를 들어, 나는 다음 클래스있어 말 : 나는 클래스 C
의 인스턴스 인, myObj
이있는 경우, 이제클래스에서 정의되지 않은/구현되지 않은 속성에 대한 파이썬 "모든 방법을 잡으십시오"
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
을, 나는 myObject.x = 42
전화, 그것을 위해 중대하다 적절한 세터를 실행합니다 데이터의 유효성 검사. 그러나 이로 인해 누군가가 myOjbect.b = 47
에 전화하는 것을 멈추지 않으며 행복하게 b
이라는 새 속성을 만듭니다. 새로운 속성을 설정할 때 특별한 코드를 실행할 수있는 방법이 있습니까? 나는 "오류,이 속성은 존재하지 않는다"와 같은 말을하기 위해 오류를 제기 할 수있는 능력을 가지고있었습니다.
데이터베이스에 API로 사용되는 클래스가 있습니다. 각 인스턴스는 항목을 나타냅니다. 데이터베이스의 필드를 나타내는 객체의 속성을 수정 한 후에는'object.save()'를 호출하여 DB를 업데이트합니다. 오히려 DB에 실제로 존재하지 않기 때문에 필드가 자동으로 삭제되기보다는 오히려 오류가 발생합니다. –