如何判断proto3的oneof字段的值类型?

How to determine the value type of proto3's oneof field?

syntax = "proto3";

package gRPC_Forecaster;

import "google/protobuf/timestamp.proto";

service Forecaster {
    rpc Forecast (ProductToForecast) returns (ForecastData) {}
}

message ProductToForecast {
    int32 productID = 1;
    google.protobuf.Timestamp startDate = 2;
    int32 forecastDurationInWeeks = 3;
    Model model = 4;
}

message ForecastData {
    repeated int32 data = 1;
    repeated int32 date = 2;
}

message Model {
    oneof model_oneof {
        ARIMA arima = 1;
        SARIMA sarima = 2;
    }
}

message ARIMA{
    int32 p = 1;
    int32 d = 2;
    int32 q = 3;
}

message SARIMA{
    int32 p = 1;
    int32 d = 2;
    int32 q = 3;
    int32 p2 = 4;
    int32 d2 = 5;
    int32 q2 = 6;

}

以上是我的 gRPC 设置的 proto3 代码,其中我有一个 python 服务器和一个 PHP 客户端。
在 PHP 客户端上,我将模型对象设置为 ARIMA。
如何在我的 python 服务器上检查 request.model 的类型是否为 ARIMA 类型?
另外,我希望 PHP 客户端能够将模型设置为 ARIMA 或 SARIMA,我的处理方式是否正确?

现在我找到了 Python 的 hasattr() 函数的解决方案。
因此,当我收到来自 PHP 应用程序的请求时,我可以执行 hasattr(request.model, "arima") 并正常工作。我不确定这是要走的路。

查看生成代码的 potocol 缓冲区参考: