gpt4 book ai didi

python - 引用 Python 函数以便稍后应用

转载 作者:行者123 更新时间:2023-11-30 23:49:31 25 4
gpt4 key购买 nike

给定一个对象 Foo,它有一组方法 Bar、Baz、Quux 和 Close。

我想将调用包装到 Foo 中,如下所示

def wrapper(method_symbol, *args):
object = Foo()
apply(object.method_symbol, args)
object.Close()

稍后,我可以调用 wrapper(Bar, MySweetArgs) 并正确分派(dispatch)包装器。

显然,在 Lisp 中这很简单,只需 QUOTE method_symbol 就可以了。

目标是以文本高效的方式正确分配/取消分配资源。我不想用 SafeFoo 类包装所有 Foo。

最佳答案

如果您想通过名称调用该方法,则 wrapper 函数可能如下所示:

def wrapper(method_symbol, *args):
obj = Foo()
getattr(obj, method_symbol)(*args)
obj.Close()

wrapper('Bar', 1, 2, 3)

您还可以直接使用该方法,而不是其名称:

def wrapper(method, *args):
obj = Foo()
method(obj, *args)
obj.Close()

wrapper(Foo.Bar, 1, 2, 3)

关于python - 引用 Python 函数以便稍后应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7604048/

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