如何解决重新引用python中的大量函数
我有一个文件 @Controller
class BumblebeeEventController {
@PostMapping("/publish")
fun eventIntake(@RequestBody @Valid payload: BumblebeeEventList) : ResponseEntity<String>{
return ResponseEntity("Published ${eventList.size} event(s) successfully",HttpStatus.OK)
}
}
class Event(@NotBlank val localTime: String){}
class BumblebeeEvent(@NotNull val event: Event)
class BumblebeeEventList(@NotNull val events: List<BumblebeeEvent>){}
,它定义了许多有用的函数。对于每个函数,我想创建一个 alias ,当被调用时将给出对函数的引用。像这样:
functional.py
foo/functional.py
def fun1(a):
return a
def fun2(a):
return a+1
...
foo/__init__.py
from inspect import getmembers,isfunction
from . import functional
for (name,fun) in getmembers(functional,isfunction):
dun = lambda f=fun: f
globals()[name] = dun
我可以使用 >> bar.fun1()(1)
>> 1
>> bar.fun2()(1)
>> 2
从 functional.py
获取函数并动态定义一组适合我的目的的新函数。
但是为什么呢?您可能会问...我正在使用配置管理器 Hydra,可以通过指定完全限定名称来实例化对象。我想在配置中使用 inspect
中的函数,并在创建使用该函数的对象时让 hydra 传递对该函数的引用(更多详细信息可以在 Hydra documentation 中找到)。
有很多函数,我不想把它们都写出来……人们在类似的 questions 中指出,为此目的修改 functional.py
是不好的做法。我的用例相当有限 - 文档方面存在一对一映射(但显然 IDE 无法解决它)。
基本上,我想知道是否有更好的方法来做到这一点!
解决方法
您的问题是否与 this 功能请求有关,尤其是与 this 评论有关?
仅供参考:在 Hydra 1.1 中,instantiate fully supports positional arguments 所以我认为您应该能够直接调用 functools.partial
而无需重新定义它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。