gpt4 book ai didi

Python functools.partial - 如何使用静态装饰器将其应用于类方法

转载 作者:太空狗 更新时间:2023-10-30 02:28:27 25 4
gpt4 key购买 nike

我知道一定有办法做到这一点。但我收到错误“TypeError:第一个参数必须是可调用的”。

我可以做些什么不同的事情来完成这项工作?

class FaxMachine(object):
MODEL_NO = '100'

@staticmethod
def load_fax(fax, error=''):
# send fax here

fail_fax = functools.partial(load_fax, error='PC LOAD LETTER')

最佳答案

staticmethod 对象不可调用。他们是 descriptors在它们的 __func__ 属性中保留对原始函数的引用。

所以下面的工作:

# Note: apply staticmethod again
fail_fax = staticmethod(partial(load_fax.__func__, error='PC LOAD LETTER'))

您还可以在类命名空间中定义辅助函数,以避免不必要的属性查找:

def _load_fax(fax, error=''):
# ...

# _load_fax is an ordinary function
load_fax = staticmethod(_load_fax)
fail_fax = staticmethod(partial(_load_fax, error='PC LOAD LETTER'))

虽然正确的 Python 3.4+ 解决方案是使用 partialmethod ,旨在与描述符一起使用:

fail_fax = partialmethod(load_fax, error='PC LOAD LETTER')

关于Python functools.partial - 如何使用静态装饰器将其应用于类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36922532/

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