繁体   English   中英

TypeError:必须使用“Class name”实例作为第一个参数调用unbound方法“method name”(改为使用str实例)

[英]TypeError: unbound method “method name” must be called with “Class name” instance as first argument (got str instance instead)

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

我有下一堂课:

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)

我做错了什么?

提前致谢...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM