Python TypeError:uuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;家长';

Python TypeError:uuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;家长';,python,python-2.7,google-app-engine,google-cloud-datastore,app-engine-ndb,Python,Python 2.7,Google App Engine,Google Cloud Datastore,App Engine Ndb,我正在使用云数据存储后端在Google App Engine中构建一个应用程序 我的模型基类 从google.appengine.ext导入ndb class CFCModel(ndb.Model): """ Base model from which we can inherit other models. Test """ created_date = ndb.DateTimeProperty(auto_now=True) modified_date

我正在使用云数据存储后端在Google App Engine中构建一个应用程序

我的模型基类

从google.appengine.ext导入ndb

class CFCModel(ndb.Model):
    """
    Base model from which we can inherit other models. Test
    """
    created_date = ndb.DateTimeProperty(auto_now=True)
    modified_date = ndb.DateTimeProperty(auto_now_add=True)
模型继承的类是

class PraiseReport(CFCModel):
    def __init__(self):
        self.username = ndb.StringProperty(repeated=True)
        self.report = ndb.StringProperty(required=True)
        super(PraiseReport, self).__init__()
我现在正在尝试创建一个对象

key = PraiseReportRepository.get_praise_report_key()
praise_report_model = PraiseReport(parent=key)
praise_report_model.username = praise_report.username
praise_report_model.report = praise_report.report
praise_report_model.put()
我得到以下错误

ERROR    2016-05-25 09:34:59,882 app.py:1423] Exception on /forms/add_praise_report [GET]
Traceback (most recent call last):
  File "/Users/vinay/App-Engine/CM-12/server/lib/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/vinay/App-Engine/CM-12/server/lib/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/vinay/App-Engine/CM-12/server/lib/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/vinay/App-Engine/CM-12/server/lib/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/vinay/App-Engine/CM-12/server/lib/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/vinay/App-Engine/CM-12/cfc/decorators/authentication.py", line 62, in authenticate_and_call_member
    return func(*args, **kwargs)
  File "/Users/vinay/App-Engine/CM-12/Routes/PraiseReportRoutes.py", line 34, in add_report
    repo.add(report)
  File "/Users/vinay/App-Engine/CM-12/cfc/data/PraiseReportRepository.py", line 12, in add
    praise_report_model = PraiseReport(parent=key)
TypeError: __init__() got an unexpected keyword argument 'parent'

这里有不少错误。主要的一点是,您已经重写了
\uuuu init\uuu
方法,因此它不接受任何参数,但随后您尝试使用参数调用它。显然,您的子类方法应该接受与基类相同的参数,并将这些参数传递到
super
调用中-通常通过
*args、**kwargs
完成

但是,看起来您根本不应该在这里重写
\uuuuu init\uuuu
。您在该重写方法中拥有的唯一代码肯定不属于该方法。字段必须始终在类级别定义;如果在方法中定义它们,它们将根本不起作用。将这些字段移出,并完全删除该方法

class PraiseReport(CFCModel):
    username = ndb.StringProperty(repeated=True)
    report = ndb.StringProperty(required=True)

正如您所看到的,这些类中没有
父类
变量。所以这个
parent=key
会给你一个错误,那么如果基类有这样一个属性,我该如何设置这个值呢?看起来你把GAE
parent
的概念和Python
超类混为一谈了。我建议阅读每一篇文章,这样你就可以了解它们的区别。