Pythonで「列挙型」を表現するにはどうすればよいですか? Pythonで列挙型を作成する方法について。ndb.Model
列挙値の 1 つを受け入れたいフィールドがあります。フィールドを に設定するだけStringProperty
ですか? 私の列挙型は
def enum(**enums):
return type('Enum', (), enums)
ALPHA = enum(A="A", B="B", C="C", D="D")
Pythonで「列挙型」を表現するにはどうすればよいですか? Pythonで列挙型を作成する方法について。ndb.Model
列挙値の 1 つを受け入れたいフィールドがあります。フィールドを に設定するだけStringProperty
ですか? 私の列挙型は
def enum(**enums):
return type('Enum', (), enums)
ALPHA = enum(A="A", B="B", C="C", D="D")
これはProtoRPC Python APIで完全にサポートされており、独自に作成する価値はありません。
単純な Enum は次のようになります。
from protorpc import messages
class Alpha(messages.Enum):
A = 0
B = 1
C = 2
D = 3
結局のところ、オブジェクトを格納するためのモジュールがndb
あり、これは文書化されています.msgprop
protorpc
したがって、列挙型を保存するにAlpha
は、次のようにします。
from google.appengine.ext import ndb
from google.appengine.ext.ndb import msgprop
class Part(ndb.Model):
alpha = msgprop.EnumProperty(Alpha, required=True)
...
EDIT : hadwareで指摘されているように、 amsgprop.EnumProperty
はデフォルトではインデックス化されていません。そのようなプロパティに対してクエリを実行する場合は、プロパティを次のように定義する必要があります
alpha = msgprop.EnumProperty(Alpha, required=True, indexed=True)
次に、クエリを実行します
ndb.query(Part.alpha == Alpha.B)
または 以外の値を使用しますAlpha.B
。