diff --git a/src/protobuf.py b/src/protobuf.py index 9fd417354..a58043881 100644 --- a/src/protobuf.py +++ b/src/protobuf.py @@ -108,7 +108,10 @@ class UnicodeType: class MessageType: WIRE_TYPE = 2 - FIELDS = {} + + @classmethod + def get_fields(cls): + return {} def __init__(self, **kwargs): for kw in kwargs: @@ -149,7 +152,7 @@ FLAG_REPEATED = const(1) async def load_message(reader, msg_type): - fields = msg_type.FIELDS + fields = msg_type.get_fields() msg = msg_type() while True: @@ -204,8 +207,8 @@ async def load_message(reader, msg_type): setattr(msg, fname, fvalue) # fill missing fields - for tag in msg.FIELDS: - field = msg.FIELDS[tag] + for tag in fields: + field = fields[tag] if not hasattr(msg, field[0]): setattr(msg, field[0], None) @@ -215,7 +218,7 @@ async def load_message(reader, msg_type): async def dump_message(writer, msg): repvalue = [0] mtype = msg.__class__ - fields = mtype.FIELDS + fields = mtype.get_fields() for ftag in fields: fname, ftype, fflags = fields[ftag]