MessageField 클래스는 네트워크 또는 프로세스 공간에서 효율적인 전송을 위해 메시지를 정의하는 데 사용됩니다. 메시지는 필드 클래스를 사용하여 정의됩니다.
MessageField
는 protorpc.messages
모듈에서 제공됩니다.
생성자
MessageField 클래스의 생성자는 다음과 같이 정의됩니다.
- class MessageField(message_type, number, [required=False | repeated=False])
-
하위 메시지 값의 필드를 정의합니다.
인수- message_type
- 필드의 메시지 유형입니다. Message의 서브클래스여야 합니다.
- 숫자
- 필드 번호입니다. 메시지 클래스마다 고유해야 합니다.
- required=False
- 이 필드가 필수인지 여부입니다.
repeated
인수와 상호 배타적입니다.required=True
를 사용하는 경우repeated=True
를 지정하지 마세요. - repeated=False
- 이 필드가 반복되는지 여부입니다.
required
인수와 상호 배타적입니다.repeated=True
를 사용할 경우required=True
를 지정하지 마세요.
message_type
이 잘못되면 FieldDefinitionError가 발생합니다.
클래스 속성
MessageField 클래스는 다음 속성을 제공합니다.
- type
- 이 필드의 값에 사용되는 Python 유형입니다. 예를 들어 DateTimeField의 경우
type
은datetime.datetime
입니다. 사용자 정의된 MessageFields의 경우type
는 지정된 Message 유형입니다. - message_type
- 직렬화에 사용되는 기본 메시지 유형입니다. 특히 Message 클래스의 인스턴스에 저장할 수 있는 유형입니다. 예를 들어 DateTimeField의 경우 유형은
message_types.DateTimeMessage
입니다. 일반 메시지 필드의 경우는 protorpc 메시지 하위 클래스입니다. 예를 들면 다음과 같습니다.class Sub(messages.Message): x = messages.IntegerField(1) class M(messages.Message): sub = messages.MessageField(Sub, 1) dt = message_types.DateTimeField(2) print 'M.sub.type =', M.sub.type print 'M.sub.message_type =', M.sub.message_type print 'M.dt.type =', M.dt.type print 'M.dt.message_type =', M.dt.message_type === output === M.sub.type = <class '__main__.Sub> M.sub.message_type = <class '__main__.Sub'> M.dt.type = <type 'datetime.datetime'> M.dt.message_type = <class 'protorpc.message_types.DateTimeMessage'>