You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何安全地将一个类的方法绑定到另一个类?

嘿,我最近摸索Python的时候发现了两个关于类方法绑定的有意思的点,跟大家唠唠:

1. 普通函数可以直接附加到类,变成它的方法

我本来就知道可以用setattr()把普通函数绑定到类上,让它成为类的方法,比如这样:

>>> def is_not_bound(inst, name):
...     print("Hello %s" % name)
...
>>> class NoMethods:
...     pass
...
>>> setattr(NoMethods, 'bound', is_not_bound)
>>> NoMethods().bound("oz") # 输出: Hello oz

调用的时候,实例会自动作为第一个参数inst传进去,完全像类里原生定义的方法一样工作。

2. 把一个类的绑定方法绑定到另一个类也能行!

这一点是我完全没想到的——原来一个类的绑定方法,也能通过setattr()绑定到另一个毫不相关的类上,照样正常运行:

>>> class Foo:
...     def foo(self, name):
...         print("Hello %s" % name)
...
>>> class Bar:
...     pass
...
>>> setattr(Bar, 'bar_method', Foo().foo)
>>> Bar().bar_method("oz") # 输出: Hello oz

哪怕Bar类本身根本没定义这个方法,把Foo实例的绑定方法挂上去之后,Bar的实例调用它时居然也能正常输出,是不是挺出乎意料的?

内容的提问来源于stack exchange,提问作者oz123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:47:43