python - 如何将 functools.partial 用于类方法?
问题描述
我想将部分来自 functools 应用于类方法。
from functools import partial
class A:
def __init__(self, i):
self.i = i
def process(self, constant):
self.result = self.i * constant
CONST = 2
FUNC = partial(A.process, CONST)
当我尝试:
FUNC(A(4))
我收到了这个错误:
'int' object has no attribute 'i'
似乎 CONST 已与对象 A 交换。
解决方案
您正在绑定一个位置参数,partial
该参数将转到 , 的第一个process
参数self
。然后,当您调用它时,您将A(4)
作为第二个位置参数传递constant
. 换句话说,参数的顺序是混乱的。您需要明确绑定CONST
到constant
:
FUNC = partial(A.process, constant=CONST)
或者,这将做同样的事情:
FUNC = lambda self: A.process(self, CONST)
推荐阅读
- html - 使用 CSS 缩放时如何修复图像和文本的失真?
- visual-studio-code - 编辑器内的 VS Code 搜索,无需翻转
- node.js - 过滤来自特定用户的反应 discord.js
- python - 在熊猫中保留一对行数据
- c# - 创建一个文本文件并且无法识别创建的文件所在的位置
- android - Keepsynced(true) 和 Firebase Listener 之间的区别?当活动被破坏时,我们是否需要将 Keepsynced 设置为 False?
- python - 使用 input() 函数在字符串迭代旁边打印变量
- php - 获取 URL 中斜线之间的变量
- python - 如果不为空,则发回模板中的错误列表
- git - 更改提交者作者姓名