On Wed, Dec 14, 2011 at 12:14 PM, Lie Ryan <lie.1...@gmail.com> wrote: > On 12/15/2011 03:56 AM, Eric Snow wrote: >> >> On Tue, Dec 13, 2011 at 11:05 PM, Eric Snow<ericsnowcurren...@gmail.com> >> wrote: >> >> If you want to be more dynamic about it you can do it, but it involves >> black magic. Chances are really good that being explicit through your >> class definition is the right approach. > > > Note that the black spice is to use the __class__ attribute: > > foo.__class__.__exit__ = foo.goodbye
Good point. 'type(foo).__exit__ ...' might be even better. Regardless, to get the dynamicism to which Steve originally referred (make it work when added directly to the instance), you have to use a metaclass, which is black magic[1]. However, rarely is that sort of thing needed, so the relatively superfluous details would likely only cloud the question at hand. -eric [1] I will point out that metaclasses aren't really all that bad. They are a tool worth understanding, even if you don't use them all the time. Understanding them also opens up a whole new world of understanding how Python works, particularly regarding name lookup. -- http://mail.python.org/mailman/listinfo/python-list