例如...
我想将几种方法视为“事件”,并在调用它们后触发我自己的函数。
我不手动调用这些。
作为一个不熟悉Python但熟悉C#的人,我理想上希望能够修补到模块方法中,并更改功能或仅回调我自己的方法。
编辑:添加示例
def my_own_callback_method():
# do something here
# imagine in a large code base there's a method I'd like to target and fire my own callback ...
#
# ... something else invokes a method ('not_my_method') in a third-party module ('core').
def not_my_method():
# the orginial function executes as it would
#
# but I'd like to pre/post callback my own method from my module
my_own_callback_method()
或者,能够“修补”方法并更改其功能会很好。下面的示例-
# again, imagine in a large code base there's a method I'd like to target ...
# ... but I'd like to alter the way this method works in my own module.
#
# kind of like...
def my_method(something:str, something_else:int):
# my own method patch of how the original 'not_my_method' should work
def not_my_method(something:str, something_else:int):
return my_method(something, something_else)
答案 0 :(得分:0)
如果您对not_my_method
的代码没有任何控制,由于您实际上想更改其源代码,这几乎是不可能的事情。
我相信,您可以实现的最好方法是将其包装在自己的函数中,该函数在调用my_method
之后调用not_my_method
,但是就可以了。
也许您是从错误的角度看它。修补调用not_my_method
的实际事件可能比修补not_my_method
本身容易。