2012-02-12 10 views
11

これは簡単な質問です。TypeError:バインドされていないメソッド "クラス名"インスタンスを最初の引数として呼び出す必要があります(代わりに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.') 

を、方法がGruposHandlerからobtenerPaginaが適切に呼び出されていないようです。これは私が得るスタックトレースです:

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

私は間違っていますか?

事前のおかげで...

答えて

23
grupoHandler = GruposHandler 

==>

grupoHandler = GruposHandler() 

UPDATE:
selfpOpcion=NonepMensajeInformacion=None

GruposHandler.obtenerPagina()方法は3つの引数を受け入れます。

それらの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に渡されます。

関連する問題

 関連する問題