EnumField 클래스는 enum 값에 대한 정의를 제공합니다. Enum 필드에는 연결된 enum 유형이 확인될 때까지 지연되는 기본값이 있을 수 있습니다. 이 값은 특정 순환 참조를 지원하는 데 필요합니다. 예를 들면 다음과 같습니다.
from protorpc import messages class Message1(messages.Message): class Color(messages.Enum): RED = 1 GREEN = 2 BLUE = 3 # Validate this field's default value when default is accessed. animal = messages.EnumField('Message2.Animal', 1, default='HORSE') class Message2(messages.Message): class Animal(messages.Enum): DOG = 1 CAT = 2 HORSE = 3 # This fields default value will be validated right away since Color is # already fully resolved. color = messages.EnumField(Message1.Color, 1, default='RED')
EnumField
는 protorpc.messages
모듈에서 제공됩니다.
생성자
EnumField 클래스의 생성자는 다음과 같이 정의됩니다.
- class EnumField(enum_type, number, required, repeated, variant, default)
-
Enum 값에 대한 필드 정의를 제공합니다.
인수- enum_type
- 필드의 Enum 유형입니다. Enum의 서브클래스여야 합니다.
- 숫자
- 필드의 숫자입니다. 메시지 클래스별로 고유해야 합니다.
- required
- 이 필드가 필수인지 여부입니다.
repeated
인수와 상호 배타적입니다.required
를 사용하는 경우repeated
를 지정하지 마세요. - repeated
- 이 필드가 반복되는지 여부입니다.
required
인수와 상호 배타적입니다.repeated
를 사용하는 경우required
를 지정하지 마세요. - variant
- 필드 유형을 추가로 지정합니다. 일부 필드 유형은 기본 전송 형식을 기준으로 추가로 제한됩니다. 기본값을 사용하는 것이 가장 좋지만 개발자는 이 필드를 사용하여 정수 필드를 32비트 정수 또는 기본 64비트로 선언할 수 있습니다.
- default
- 스트림에서 찾을 수 없는 경우 필드에 사용할 기본값입니다.
enum_type
이 유효하지 않으면 FieldDefinitionError가 발생합니다.
클래스 속성
EnumField 클래스는 다음 클래스 속성을 제공합니다.
- type()
- 필드에 사용되는 Enum 유형입니다.
- default()
- enum 필드의 기본값입니다. 기본값이 확인되지 않는 경우 Enum 유형을 기본값으로 사용합니다.
인스턴스 메소드
EnumField 인스턴스에는 다음과 같은 메소드가 있습니다.
- validate_default_element(value)
- Enum 필드의 기본 요소에 대한 유효성을 검사합니다. Enum 필드는 필드 유형이 확인되지 않은 경우 지연된 기본값 확인을 허용합니다. 필드의 기본값은 문자열이거나 정수일 수 있습니다. 필드의 Enum 유형이 확인된 경우 해당 유형에 대해 기본값의 유효성이 검사됩니다.