2012-02-12 10 views
11

Myślę, że powinno to być proste pytanie.TypeError: niezwiązana metoda "nazwa metody" musi zostać wywołana z instancją "Class name" jako pierwszym argumentem (zamiast tego otrzymano instancję str)

mam kolejne zajęcia:

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

ale wydaje się, że metoda obtenerPagina z GruposHandler nie są prawidłowo wywoływane. To jest stacktrace, które otrzymuję:

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

Co robię źle?

góry dzięki ...

Odpowiedz

23
grupoHandler = GruposHandler 

==>

grupoHandler = GruposHandler() 

UPDATE:

GruposHandler.obtenerPagina() metoda przyjmuje 3 argumenty:
self, pOpcion=None i pMensajeInformacion=None.

Od 2 z nich są obowiązkowe, nie dostaniesz:

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

gdy nazywając go tak:

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

Zamiast GruposHandler.obtenerPagina() interpretuje argumenty tak:

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

i podnosi:

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

Aby pozbyć wyjątkiem, trzeba wywołać tę metodę z innymi:

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

i self zostaną przekazane do obtenerPagina niejawnie.

Powiązane problemy