Подтвердить что ты не робот

TypeError: unbound method "имя метода" должен быть вызван с экземпляром "Имя класса" в качестве первого аргумента (вместо этого получил экземпляр str)

Я думаю, что это должен быть простой вопрос для ответа.

У меня есть следующие классы:

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.')

но кажется, что метод obtenerPagina от GruposHandler не называется должным образом. Это значение stacktrace, которое я получаю:

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

Что я делаю неправильно?

Спасибо заранее...

4b9b3361

Ответ 1

grupoHandler = GruposHandler

== >

grupoHandler = GruposHandler()

ОБНОВЛЕНИЕ:

GruposHandler.obtenerPagina() метод принимает 3 аргумента:
self, pOpcion=None и pMensajeInformacion=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 неявно.