Monkey-patch Python class

后端 未结 4 1967
醉酒成梦
醉酒成梦 2020-11-27 03:11

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

from module import MyClass

class ReplaceClass(object)
  ...

MyClass = ReplaceClass
         


        
4条回答
  •  爱一瞬间的悲伤
    2020-11-27 03:20

    import some_module_name
    
    class MyClass(object): 
         ... #copy/paste source class and update/add your logic
    
    some_module_name.MyClass = MyClass
    

    Its preferable not to change the name of class while replacing, because somehow someone may have referenced them using getattr - which will result in fail like below

    getattr(some_module_name, 'MyClass') --> which will fail if you have replaced MyClass by ReplaceClass !

提交回复
热议问题