我正在为我的游戏编写一个 modding API,我希望允许用户告诉游戏引擎在其中一个 API 函数之前或之后立即运行他们的 mod 函数,换句话说就是“扩展”这些函数。
在此之前,模组制作者必须重写函数以添加功能,这意味着挖掘游戏的源代码,我认为这对他们来说很糟糕。
现在我在想这样的事情:
def moddersFunction():
pass
myAPI.extendFunction('functionName', 'before-or-after', moddersFunction, extraArgs=[])
现在有什么比较干净的方法来实现这个?换句话说,myAPI.extendFunction
如果你写它的内部会是什么样子?
我正在考虑拥有一个字典,myAPI.extendFunction 将向其中添加函数,如果已设置(“注册”),我的 API 中的函数将检查并运行 mod 的函数。但这意味着在我希望允许扩展的修改 API 中的每个函数中添加检查字典的代码(即使它只是一个执行检查和函数调用自身的函数调用,它本身似乎也很重要) .
我想知道是否有一些巧妙的 Python 技巧可以允许这种“扩展”功能而不会“屠杀”(也许我夸大了)我的游戏 API 的现有源代码。