[Python-Dev] Monkeypatching idioms -- elegant or ugly?

glyph at divmod.com glyph at divmod.com
Tue Jan 15 16:59:53 CET 2008

On 03:37 pm, guido at python.org wrote:
>I think it's useful to share these recipes, if only to to establish
>whether they have been discovered before, or to decide whether they
>are worthy of a place in the standard library. I didn't find any
>relevant hits on the ASPN Python cookbook.

>from <somewhere> import <someclass>
>class <newclass>(<someclass>):
>    __metaclass__ = monkeypatch_class
>    def <method1>(...): ...
>    def <method2>(...): ...
>    ...

I've expressed this one before as "class someclass(reopen(someclass)):", 
but have thankfully never needed to actually use that in a real program. 
It's been a helpful tool in explaining to overzealous Ruby-ists that 
"reopenable" classes are not as unique as they think.

My feelings on monkeypatching is that it *should* feel a little gross 
when you have to do it, so the code I've written that does 
monkeypatching for real is generally a bit ugly.

More information about the Python-Dev mailing list