I'm using Python 3.2.2, and the following program gives me an error that I don't understand:
class Foo: pass foo = Foo() foo.name = "Steve" def add_goodbye_function(obj): def goodbye(): print("goodbye " + obj.name) obj.goodbye = goodbye add_goodbye_function(foo) foo.goodbye() # outputs goodbye Steve foo.__exit__ = foo.goodbye foo.__exit__() # outputs goodbye Steve with foo: # fails with AttributeError: __exit__ print("doing stuff") I am dynamically adding an attribute __exit__ to the variable foo, which works fine when I call it directly, but it fails when I try to use foo as the expression in the with statement. Here is the full output: > python3 with.coffee goodbye Steve goodbye Steve Traceback (most recent call last): File "with.coffee", line 17, in <module> with foo: # fails with AttributeError: AttributeError: __exit__ What am I doing wrong? -- http://mail.python.org/mailman/listinfo/python-list