약간의 유효성 검사 API를 작성하고 클래스 '__init__
메서드의 각 필드에 대한 제약 조건을 초기화하고 있습니다. 그러나이 설정은 기본적으로 클래스에 대해 한 번만 수행 할 수 있습니다.Python에서 상속되었지만 공유 (정적) 클래스 멤버
class Demo(Validatable):
def __init__(self):
Validatable.__init__(self)
self.count = 11
# could be done at class level
self.constrain_field("count", Max(9), Even())
그러나 문제는, 각 필드의 제약이 어딘가에 저장해야하고 그 상속 클래스 Validatable
의 일부인 할 수있는 데이터 구조 것이다. 따라서 파생 된 모든 클래스가 동일한 데이터 구조를 공유하게됩니다. 제약 조건이 클래스 수준에서 설정되면 어떤 일이 발생하지 않아야합니다!
class Demo(Validatable):
# doesn't work!
Validatable.constrain_field("count", Max(9), Even())
def __init__(self):
self.count = 11
데이터 구조를 상속 제약에 대한 데이터 구조를 공유하지 않고 파생 클래스에 클래스 수준에서 초기화 할 가능성이 있습니까?
'constraint_field()'는 클래스 메소드 또는 정적 메소드입니까? 어떻게 정의됩니까? – brandizzi
지금은 일반적인 (인스턴스) 메소드이지만 변경하고 싶습니다. 본질적으로이 방법은 필드 이름을 키로하고 제약 조건 목록을 값으로 사용하여 사전에 제약 조건을 추가합니다. – deamon