gpt4 book ai didi

Python;强制两个函数实现相同的接口(interface)?

转载 作者:太空宇宙 更新时间:2023-11-04 10:20:40 25 4
gpt4 key购买 nike

我想为函数做点什么,而不是,比如

def function_A(param1, param2 = "default_param_2")

def function_B(__signature of A__)

因此,每当我更改A 的界面时,它都会自动更新到B 中。是否存在函数的“抽象基接口(interface)”概念或执行此操作的机制?

最佳答案

不确定这有多大用处,但装饰器可能会为您提供至少一部分您正在寻找的内容。考虑:

from functools import wraps

def abi(f):
@wraps(f) #preserves name/doc of wrapped function
def function_A(param1, param2='param2'):
print(param1, param2)
return function_A

@abi
def function_B(*args, **kw):
"I'm function_B but I'm REALLY function_A. Look there for params."
pass

为 function_B 定义 *args 和 **kw 使 function_A 可以灵活地更改其签名。传递给 function_B 的任何参数都将按照正常规则映射到 function_A;太多的参数、参数的多个值等都会引发类型错误。

如果更改 function_A 的签名,任何对仍然匹配的 function_B 的调用都可以成功调用(假设模块已重新加载)。其余部分显然会失败,您需要更新对 function_B 的调用。

希望对您有所帮助! YMMV.

关于Python;强制两个函数实现相同的接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32462234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com