pythonmonkeypatching

Monkey-patch Python class


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 add a method to the class like this

def bar():
   print 123

MyClass.foo = bar

it will work, but the foo method will be available everywhere else as well.

How can I replace the class completely instead of replacing the method?


Solution

  • import module
    class ReplaceClass(object):
        ....
    module.MyClass = ReplaceClass