seems like I do not understand something with---the python with
statement.
Consider this class:
class test(object):
def __enter__(self): pass
def __exit__(self, *ignored): pass
now, when using it with with
, like in
with test() as michael:
print repr(michael)
I would expect some output like <test instance at memore blah>. But I get None.
Something wrong here? Any suggestions would help.
(I am using Python 2.6.6.)
EDIT:
Thanks to
ephement for pointing me to the documentation. The __enter__
method should read
def __enter__(self): return self
From the with
documentation:
If a target was included in the
with
statement, the return value from__enter__()
is assigned to it.
If you def __enter__(self): return self
, then your expected output is produced.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With