Re: Need help with "with-statement-compatible" object

2007-12-19 Thread Dmitry Teslenko
On Dec 19, 2007 12:14 PM, Peter Otten <[EMAIL PROTECTED]> wrote:
> def __enter__(self):
> # ...
> return self
>
> should help.

That helps. Thanks!
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Need help with "with-statement-compatible" object

2007-12-19 Thread Peter Otten
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