【问题标题】:TypeError: unbound method "method name" must be called with "Class name" instance as first argument (got str instance instead)TypeError:必须以“类名”实例作为第一个参数调用未绑定的方法“方法名”(改为获取 str 实例)
【发布时间】:2012-02-12 01:32:40
【问题描述】:

我认为这应该是一个简单的问题。

我有下一堂课:

class GruposHandler(webapp.RequestHandler):
    def get(self):
        self.obtenerPagina()

    def obtenerPagina(self, pOpcion = None, pMensajeInformacion = None):
        opcion = pOpcion if pOpcion is not None else self.request.get('opcion') 
        usuario = obtenerUsuario()
        rsGrupos = obtenerGruposAll() 
        listaOtrosGrupos = []
        listaGruposSuscriptos = []
        blah blah ........

class NuevoGrupoHandler(webapp.RequestHandler): 
    def post(self):
        nombre = self.request.get('nombre')
        descripcion = self.request.get('descripcion')
        obj = Grupo.get_by_key_name(nombre)
        if obj:
            doRender(self, 'nuevo_grupo.html', {'mensaje_descripcion':'Ya existe un grupo con ese nombre.'})
        else:
            grupo = model.Grupo(key_name = nombre, nombre=nombre, descripcion = descripcion);
            grupo.put()
            grupoHandler = GruposHandler
            grupoHandler.obtenerPagina("gruposMios", 'Informacion: un nuevo grupo fue agregado.')

但似乎没有正确调用来自 GruposHandler 的方法 obtenerPagina。这是我得到的堆栈跟踪:

TypeError: unbound method obtenerPagina() must be called with GruposHandler instance as first argument (got str instance instead)

我做错了什么?

提前谢谢...

【问题讨论】:

    标签: python


    【解决方案1】:
    grupoHandler = GruposHandler
    

    ==>

    grupoHandler = GruposHandler()
    

    更新:

    GruposHandler.obtenerPagina() 方法接受 3 个参数:
    selfpOpcion=NonepMensajeInformacion=None

    由于其中 2 个是可选的,因此您不会得到:

    TypeError: ... takes exactly 3 arguments (2 given)
    

    当这样调用它时:

    GruposHandler.obtenerPagina("gruposMios", 'Informacion: ...')
    

    GruposHandler.obtenerPagina() 会这样解释参数:

    self="gruposMios", pOpcion='Informacion: ...', pMensajeInformacion=None
    

    并提出:

    TypeError: ... must be called with instance (got str instance instead)
    

    要摆脱异常,你需要从实例中调用这个方法:

    GruposHandler().obtenerPagina("gruposMios", 'Informacion: ...')
    

    并且self 将被隐式传递给obtenerPagina

    【讨论】:

      猜你喜欢
      • 2013-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 2018-05-10
      • 2018-02-18
      • 2023-04-06
      • 2014-12-10
      相关资源
      最近更新 更多