Python 2.7 telah mencapai akhir dukungan
dan akan
dihentikan penggunaannya
pada 31 Januari 2026. Setelah penghentian penggunaan, Anda tidak akan dapat men-deploy aplikasi Python 2.7, meskipun organisasi Anda sebelumnya menggunakan kebijakan organisasi untuk mengaktifkan kembali deployment runtime lama. Aplikasi Python 2.7 yang ada akan terus berjalan dan menerima traffic setelah
tanggal penghentiannya. Sebaiknya Anda
bermigrasi ke versi Python terbaru yang didukung.
Class Message
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Class Message digunakan untuk menentukan pesan agar dapat melakukan transmisi secara efisien di seluruh jaringan atau ruang proses. Pesan ditentukan menggunakan class field.
Message
disediakan oleh modul protorpc.messages
.
Pengantar
Pesan lebih dibatasi daripada class normal karena hanya dapat berisi atribut field serta definisi Message dan Enum lainnya.
Pembatasan ini berlaku karena struktur class Message itu sendiri dimaksudkan untuk ditransmisikan di seluruh jaringan atau ruang proses dan digunakan langsung oleh klien atau bahkan server lain.
Dengan demikian, metode dan atribut non-field tidak dapat ditransmisikan dengan informasi struktural, yang menyebabkan perbedaan antara bahasa dan implementasi yang berbeda.
Inisialisasi dan Validasi
Objek Message dianggap telah diinisialisasi jika memiliki semua kolom wajib diisi dan semua pesan bertingkat juga diinisialisasi.
Memanggil 'check_initialized' akan memunculkan ValidationError jika tidak diinisialisasi; 'is_initialized' menampilkan nilai boolean yang menunjukkan apakah nilai tersebut valid.
Google Protocol RPC memvalidasi objek Message secara otomatis saat objek tersebut dibuat dan diisi.
Aplikasi Anda dapat memvalidasi apakah nilai tertentu kompatibel dengan field tempat nilai tersebut ditetapkan menggunakan metode validate() instance Field. Saat digunakan pada pesan, metode ini akan memeriksa apakah semua nilai pesan dan sub-pesannya valid. Menetapkan nilai yang tidak valid ke suatu field akan memunculkan ValidationError.
Contoh berikut membuat dan melakukan inisialisasi objek Message dalam aplikasi perdagangan saham fiktif.
from protorpc import messages
# Trade type.
class TradeType(messages.Enum):
BUY = 1
SELL = 2
SHORT = 3
CALL = 4
class Lot(messages.Message):
price = messages.IntegerField(1, required=True)
quantity = messages.IntegerField(2, required=True)
class Order(messages.Message):
symbol = messages.StringField(1, required=True)
total_quantity = messages.IntegerField(2, required=True)
trade_type = messages.EnumField(TradeType, 3, required=True)
lots = messages.MessageField(Lot, 4, repeated=True)
limit = messages.IntegerField(5)
order = Order(symbol='GOOG',
total_quantity=10,
trade_type=TradeType.BUY)
lot1 = Lot(price=304,
quantity=7)
lot2 = Lot(price=305,
quantity=3)
order.lots = [lot1, lot2]
# Now object is initialized!
order.check_initialized()
Konstruktor
Konstruktor class Message didefinisikan sebagai berikut:
- class Message(**kwargs)
-
Lakukan inisialisasi status pesan internal.
Aplikasi menginisialisasi pesan melalui konstruktor dengan meneruskan argumen kata kunci yang sesuai dengan class field. Contoh:
class Date(Message)
day = IntegerField(1)
month = IntegerField(2)
year = IntegerField(3)
Setelah menentukan class field, Anda dapat memanggil nilai field dengan singkat. Dua pemanggilan berikut setara:
date = Date(day=6, month=6, year=1911)
Setara dengan:
date = Date()
date.day = 6
date.month = 6
date.year = 1911
Metode Class
Class Message menyediakan metode class berikut:
- all_fields()
- Mendapatkan semua objek definisi field. Menampilkan iterator ke semua nilai dalam urutan arbitrer.
- field_by_name(name)
- Mendapatkan field berdasarkan nama. Menampilkan objek Field yang terkait dengan nama tersebut.
- Memunculkan KeyError jika field dengan nama tersebut tidak ditemukan.
- field_by_number(number)
- Mendapatkan field berdasarkan angka. Menampilkan objek field yang terkait dengan angka tersebut.
- Memunculkan KeyError jika kolom dengan angka tersebut tidak ditemukan.
Metode Instance
Instance message memiliki metode berikut:
- check_initialized()
- Memeriksa apakah semua kolom wajib diisi telah diinisialisasi.
- Memunculkan ValidationError jika objek Message tidak diinisialisasi.
- get_assigned_value(name)
- Mendapatkan nilai atribut yang telah ditetapkan. Jika nilai tidak ditetapkan, akan menampilkan Tidak ada
- Argumen:
- nama
- Nama atribut yang akan diperoleh.
Menampilkan nilai atribut yang ditetapkan, atau Tidak ada jika atribut tidak memiliki nilai yang ditetapkan.
- is_initialized(name)
- Mendapatkan status inisialisasi objek Message. Menampilkan
True
jika pesan valid, jika tidak False
.
- reset(name)
- Mereset nilai yang ditetapkan untuk suatu field, yang akan menetapkan kembali nilai default atau, jika tidak ada nilai default, Tidak ada.
- Argumen:
- nama
- Nama field yang akan direset.
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-09-04 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-09-04 UTC."],[[["\u003cp\u003eThe \u003ccode\u003eMessage\u003c/code\u003e class defines structured messages for efficient data transmission across networks or processes, using field attributes, other \u003ccode\u003eMessage\u003c/code\u003e definitions, and \u003ccode\u003eEnum\u003c/code\u003e types.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eMessage\u003c/code\u003e objects must have all required fields populated and nested messages initialized to be considered valid, which can be checked with \u003ccode\u003echeck_initialized\u003c/code\u003e or \u003ccode\u003eis_initialized\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eMessage\u003c/code\u003e objects are validated upon creation and population, and assigning an invalid value will raise a \u003ccode\u003eValidationError\u003c/code\u003e, while the \u003ccode\u003evalidate()\u003c/code\u003e method can check value compatibility with a field.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eMessage\u003c/code\u003e constructor accepts keyword arguments corresponding to field classes, and values can be assigned directly during object creation or afterward, with the constructor supporting both methods.\u003c/p\u003e\n"],["\u003cp\u003eThe Message class offers class methods like \u003ccode\u003eall_fields\u003c/code\u003e, \u003ccode\u003efield_by_name\u003c/code\u003e, \u003ccode\u003efield_by_number\u003c/code\u003e to access field information, and instance methods such as \u003ccode\u003eget_assigned_value\u003c/code\u003e, and \u003ccode\u003ereset\u003c/code\u003e for handling field values.\u003c/p\u003e\n"]]],[],null,["# The Message Class\n\nThe Message class is used to define messages for efficient transmission across network or process space. Messages are defined using [field classes](/appengine/docs/legacy/standard/python/tools/protorpc/messages/fieldclasses).\n\n`Message` is provided by the `protorpc.messages` module.\n\nIntroduction\n------------\n\nMessages are more restricted than normal classes in that they may only contain field attributes and other Message and Enum definitions.\nThese restrictions are in place because the structure of the Message class itself is intended to be transmitted across network or process space and used directly by clients or even other servers.\nAs such, methods and non-field attributes cannot be transmitted with structural information, which causes discrepancies between different languages and implementations.\n\n### Initialization and Validation\n\nA Message object is considered to be initialized if it has all required fields and any nested messages are also initialized.\n\nCalling 'check_initialized' will raise a ValidationError if it is not initialized; 'is_initialized' returns a boolean value indicating if it is valid.\n\nGoogle Protocol RPC validates Message objects automatically when they are created and populated.\nYour application can validate whether a given value is compatible with a field that it is assigned to using the Field instance's [validate()](/appengine/docs/legacy/standard/python/tools/protorpc/messages/fieldclass#validate) method. When used on a message, this method checks that all values of a message and its sub-messages are valid. Assigning an invalid value to a field raises a [ValidationError](/appengine/docs/legacy/standard/python/tools/protorpc/messages/exceptions#ValidationError).\n\nThe following example creates and initializes Message objects in a fictitious stock trading application. \n\n```python\nfrom protorpc import messages\n\n# Trade type.\nclass TradeType(messages.Enum):\n BUY = 1\n SELL = 2\n SHORT = 3\n CALL = 4\n\nclass Lot(messages.Message):\n price = messages.IntegerField(1, required=True)\n quantity = messages.IntegerField(2, required=True)\n\nclass Order(messages.Message):\n symbol = messages.StringField(1, required=True)\n total_quantity = messages.IntegerField(2, required=True)\n trade_type = messages.EnumField(TradeType, 3, required=True)\n lots = messages.MessageField(Lot, 4, repeated=True)\n limit = messages.IntegerField(5)\n\norder = Order(symbol='GOOG',\n total_quantity=10,\n trade_type=TradeType.BUY)\n\nlot1 = Lot(price=304,\n quantity=7)\n\nlot2 = Lot(price=305,\n quantity=3)\n\norder.lots = [lot1, lot2]\n\n# Now object is initialized!\norder.check_initialized()\n```\n\nConstructor\n-----------\n\nThe constructor of the Message class is defined as follows:\n\nclass Message(\\*\\*kwargs)\n\n: Initialize the internal messages state.\n\n An application initializes a message via the constructor by passing in keyword arguments corresponding to [field classes](/appengine/docs/legacy/standard/python/tools/protorpc/messages/fieldclasses). For example: \n\n ```python\n class Date(Message)\n day = IntegerField(1)\n month = IntegerField(2)\n year = IntegerField(3)\n ```\n\n After defining the class field, you can concisely invoke field values. The following two invocations are equivalent: \n\n ```python\n date = Date(day=6, month=6, year=1911)\n ```\n\n Is equivalent to: \n\n ```python\n date = Date()\n date.day = 6\n date.month = 6\n date.year = 1911\n ```\n\nClass Methods\n-------------\n\nThe Message class provides the following class methods:\n\nall_fields()\n: Gets all field definition objects. Returns an iterator over all values in arbitrary order.\n\nfield_by_name(name)\n: Gets fields by name. Returns a Field object associated with the name.\n: Raises a [KeyError](http://wiki.python.org/moin/KeyError) if no field by that name is found.\n\nfield_by_number(number)\n: Gets a field by number. Returns the field object associated with that number.\n: Raises a [KeyError](http://wiki.python.org/moin/KeyError) if no field by that number is found.\n\nInstance Methods\n----------------\n\nMessage instances have the following methods:\n\ncheck_initialized()\n: Checks that all required fields are initialized.\n: Raises a [ValidationError](/appengine/docs/legacy/standard/python/tools/protorpc/messages/exceptions#ValidationError) if the Message object is not initialized.\n\nget_assigned_value(name)\n: Gets the assigned value of an attribute. If the value is unset, returns None.\n: Arguments:\n\n name\n : Name of the attribute to get.\n\n Returns the assigned value of an attribute, or None if the attribute has no assigned value.\n\nis_initialized(name)\n: Gets the initialization status for the Message object. Returns `True` if the message is valid, else `False`.\n\nreset(name)\n: Resets the assigned value for a field, which re-establishes the default value or, if there is no default value, None.\n: Arguments:\n\n name\n : Name of the field to reset."]]