使用字典初始化类的实例

时间:2015-06-29 05:24:19

标签: python google-app-engine dictionary google-cloud-datastore

尝试使用他们的会议示例了解如何在Google App Engine上部署服务器应用程序。

在示例代码中,我看到以下行

    # create Conference & return (modified) ConferenceForm
    Conference(**data).put()

,其中 1.会议是一个派生自ndb.Model的类,其中包含一个成员列表(请参阅问题的结尾)

  1. data是一个字典,其中一些键与Conference
  2. 的成员名称相同

    所以,基本上看起来上面的代码是创建一个Conference类的实例,其值设置为与字典数据中的键相关联的值。

    这是一个通用的Python代码(即创建一个类的实例,其值是用字典中的值初始化的)还是在ndb.Model init函数中有什么东西使用gettattr / setattr来完成上面的工作?

    会议类的定义

    class Conference(ndb.Model):
        """Conference -- Conference object"""
        name            = ndb.StringProperty(required=True)
        description     = ndb.StringProperty()
        organizerUserId = ndb.StringProperty()
        topics          = ndb.StringProperty(repeated=True)
        city            = ndb.StringProperty()
        startDate       = ndb.DateProperty()
        month           = ndb.IntegerProperty()
        endDate         = ndb.DateProperty()
    

1 个答案:

答案 0 :(得分:0)

这是一个特定于NDB的实现(尽管其他Python类当然也可以这样做)。如果您浏览到NDB Model类代码,您将看到:

def __init__(*args, **kwds):
    ...
    self._set_attributes(kwds)

' _set_attributes'如果它们有效,则设置这些值。

请注意,某些键用于其他目的,例如:key,id(及更多)。