On Thu, 15 Dec 2011 05:35:55 -0800, Steve Howell wrote: > For the special methods like __enter__ and __exit__, the tricky part > isn't understanding what would happen once the methods were called; the > tricky part is getting them to be called in the first place, if they > were not declared inside the class or attached to the class.
If you *must* have per-instance special methods, my advice is to use a bit of scaffolding like this: class Whatever: def __enter__(self, *args): try: enter = self.__dict__['__enter__'] except KeyError: do_something_else() # or just let the exception occur else: enter(*args) Otherwise just live with the limitation that you can override all methods per-instance *except* dunders, and design your application accordingly. -- Steven -- http://mail.python.org/mailman/listinfo/python-list