2012-02-12 5 views
11

मुझे लगता है कि यह उत्तर देने के लिए एक सरल सवाल होना चाहिए।टाइपरर: अनबाउंड विधि "विधि नाम" को "क्लास नेम" उदाहरण के साथ पहले तर्क के रूप में जाना जाना चाहिए (इसके बजाय str instance मिला)

मैं अगले श्रेणियां होती हैं:

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() 

अद्यतन:
self, pOpcion=None और pMensajeInformacion=None:

GruposHandler.obtenerPagina() विधि 3 तर्क स्वीकार करता है।

के बाद से उनमें से 2 वैकल्पिक हैं, आप मिलता है नहीं:

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

जब यह इस तरह बुला:

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

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

इसके बजाय GruposHandler.obtenerPagina() इस तरह तर्क की व्याख्या

और उठाता है:

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

अपवाद से छुटकारा पाने के लिए, आप उदाहरण से इस विधि कॉल करने की जरूरत है:

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

और self परोक्ष obtenerPagina को दे दिया जाएगा।

संबंधित मुद्दे

 संबंधित मुद्दे