簡體   English   中英

TypeError:__init __()獲得了意外的關鍵字參數“父母”

[英]TypeError: __init__() got an unexpected keyword argument 'parent'

我正在使用Cloud Datastore后端在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'

這里有很多錯誤。 您的主要觀點是您已重寫__init__方法,使其不接受任何參數,但隨后您嘗試使用參數進行調用。 顯然,您的子類方法應接受與基類相同的參數,並將這些參數傳遞給super調用-通常通過*args, **kwargs

但是,您似乎根本不應該重寫__init__ 您在該重寫方法中擁有的唯一代碼絕對不屬於該代碼。 字段必須始終在類級別定義; 如果您在方法中定義它們,它們將根本無法工作。 將這些字段移出,然后完全刪除該方法。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM