Context manager with class methods

Thomas Rachel nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915 at spamschutz.glglgl.de
Thu Sep 22 07:47:15 EDT 2011


Am 22.09.2011 12:21 schrieb Gavin Panella:
> Hi,
>
> On Python 2.6 and 3.1 the following code works fine:
>
>      class Foo(object):
>
>          @classmethod
>          def __enter__(cls):
>              print("__enter__")
>
>          @classmethod
>          def __exit__(cls, exc_type, exc_value, traceback):
>              print("__exit__")
>
>      with Foo: pass
>
> However, in 2.7 and 3.2 I get:
>
>      Traceback (most recent call last):
>        File "<stdin>", line 1, in<module>
>      AttributeError: __exit__

Same here.

But

     with Foo(): pass

works, and that is more important and more logical.


Thomas



More information about the Python-list mailing list