Python で Google Protobuf の任意のフィールドの値を取得する方法 ― 2023年02月18日 13時40分36秒
Python で構造体の中の任意を値を取得出来る方法を探していたのだが、かなり見付けづらかった。規約書を特に、get や Field を含む関数名を探していたのだが、まさか Python の組み込み関数と同じ名前の getattr で実装して来るとは。
例として簡単な型を用意しよう。
これに普通にアクセスしようとすると、これらの変数の名前を使う。
message User {
uint64 uid = 1;
string name = 2;
}
関数等で、任意のフィールドにアクセスしようとすると、文字列を用いてアクセスしたくなる。
msg: User = ...
print(msg.uid)
print(msg.name)
msg: User = ...
for name in ["uid", "name"]:
field = getattr(msg, name)
print(field)
最近のコメント