Monkey-patch Python class

ZooKeeper picture ZooKeeper · Sep 22, 2010 · Viewed 36.7k times · Source

I've got a class, located in a separate module, which I can't change.

from module import MyClass

class ReplaceClass(object)
  ...

MyClass = ReplaceClass

This doesn't change MyClass anywhere else but this file. However if I'll add a method like this

def bar():
   print 123

MyClass.foo = bar

this will work and foo method will be available everywhere else.

How do I replace the class completely?

Answer

Glenn Maynard picture Glenn Maynard · Sep 22, 2010
import module
class ReplaceClass(object):
    ....
module.MyClass = ReplaceClass