Python中如何用未绑定方法与对象创建绑定方法(Pythonic方式)
用未绑定方法和实例创建绑定方法的Pythonic写法
在你给出的场景里,最符合Python风格的做法是使用types模块里的MethodType,它专门用来把函数(未绑定方法)和实例绑定,生成对应的绑定方法,完全不需要依赖方法名或者手动处理参数。
先看完整的实现代码:
import types class Test: def __init__(self, some_value): self.some_value = some_value def test_method(self, arg): print(self.some_value, arg) some_method = Test.test_method some_obj = Test(1) # 创建绑定方法 bound_method = types.MethodType(some_method, some_obj) # 调用测试 bound_method("hello") # 输出: 1 hello
为什么这个方案更优
- 不需要依赖方法名:不像
getattr(some_obj, some_method.__name__)那样受限于方法名称的字符串,就算方法名被动态修改也不会影响绑定逻辑 - 无需手动处理参数:不用写
lambda arg: some_method(some_obj, arg)这种需要显式声明参数的写法,MethodType会自动帮你处理self参数的绑定,调用时只需要传self之外的参数即可
内容的提问来源于stack exchange,提问作者kxl61
相关产品推荐
相关产品推荐

