Dmitry Teslenko wrote: > Hello! > I've made some class that can be used with "with statement". It looks this > way: > > class chdir_to_file( object ): > ... > def __enter__(self): > ... > > def __exit__(self, type, val, tb): > ... > def get_chdir_to_file(file_path): > return chdir_to_file(file_path) > ... > > Snippet with object instantiation looks like this: > for s in sys.argv[1:]: > c = chdir_to_file( s ) > with c: > print 'Current directory is %s' % os.path.realpath( > os.curdir ) > > That works fine. I want to enable it to be used in more elegant way: > for s in ... : > with get_chdir_to_file( s ) as c: > c.do_something() > > But python complains c is of NoneType and has no "do_something()". Am > I missing something?
Does the chdir_to_file class have a do_something() method? If so, changing chdir_to_file.__enter__() to def __enter__(self): # ... return self should help. Peter -- http://mail.python.org/mailman/listinfo/python-list