1

辞書が暗黙的に ndb.Model オブジェクトに変換されるこの機能 (?) に遭遇しました。

次のndb.Modelクラスがあります

class DateOfBirth(ndb.Model)
  day = ndb.IntegerProperty()
  month = ndb.IntegerProperty()
  year = ndb.IntegerProperty()

class User(ndb.Model):
   dob = ndb.StructuredProperty(DateofBirth)

そして、ある場所で、私が誤って口述を渡したとき

user.dob = {"day": 12, "month": 10, "year": 1983}

それは文句を言わず、うまくいったようです。

これは予想されることですか、それとも後で問題が発生することが予想されますか (この動作は文書化されておらず、いつでも壊れると予想されるため)

4

1 に答える 1

3

これは私にとって驚きでした。私は長い間 NDB を使用してきました。しかし、コードからは、それが意図されていたようです:

ただし、動作に依存する必要がないようにするには、コードを少し変更するだけです。

user.dob = DateOfBirth(**{"day": 12, "month": 10, "year": 1983})
于 2016-11-19T09:19:57.633 に答える