Python: NameError: 'self' not defined

I have to do something stupid. I run this on the Google App Engine:

class MainHandler(webapp.RequestHandler): def render(self, template_name, template_data): path = os.path.join(os.path.dirname(__file__), 'static/templates/%s.html' % template_name) self.response.out.write(template.render(path, template_data)) # error here def get(self): self.response.out.write("hi") def main(): application = webapp.WSGIApplication([('/', MainHandler)], debug=True) util.run_wsgi_app(application) if __name__ == '__main__': main() 

This gives an error:

 Traceback (most recent call last): File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3192, in _HandleRequest self._Dispatch(dispatcher, self.rfile, outfile, env_dict) File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3135, in _Dispatch base_env_dict=env_dict) File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 516, in Dispatch base_env_dict=base_env_dict) File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2394, in Dispatch self._module_dict) File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2304, in ExecuteCGI reset_modules = exec_script(handler_path, cgi_path, hook) File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2200, in ExecuteOrImportScript exec module_code in script_module.__dict__ File "main.py", line 22, in <module> class MainHandler(webapp.RequestHandler): File "main.py", line 38, in MainHandler self.writeOut(template.render(path, template_data)) NameError: name 'self' is not defined 

What am I doing wrong?

+6
python google-app-engine nameerror
source share
3 answers

An exception occurs during class definition, which means that your indentation is disabled. Tabs in Python are equivalent to 8 spaces, so if all the previous lines use tabs and your tabstop is set to 4 spaces, then the indentation only looks right.

+20
source share

Just in case, when someone happens to this and is looking for a solution that is not related to indentation, this is a good recommendation on how and when to use self .

NameError: the name 'self' is not defined

+3
source share

Most style guides for python, including the google style guide , recommend using spaces instead of tabs ... most text editors support this too. Helps to avoid such errors.

+1
source share

All Articles