MessageField 클래스

MessageField 클래스는 네트워크 또는 프로세스 공간에서 효율적인 전송을 위해 메시지를 정의하는 데 사용됩니다. 메시지는 필드 클래스를 사용하여 정의됩니다.

MessageFieldprotorpc.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의 경우 typedatetime.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'>