gpt4 book ai didi

python - 在运行时如何将方法绑定(bind)到 python 中的对象?

转载 作者:行者123 更新时间:2023-11-28 21:49:07 24 4
gpt4 key购买 nike

我想在运行时向对象添加一个方法。

class C(object):
def __init__(self, value)
self.value = value

obj = C('test')

def f(self):
print self.value

setattr(obj, 'f', f)
obj.f()

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() takes exactly 1 argument (0 given)

但是好像setattr并没有把方法绑定(bind)到对象上。可以这样做吗?

最佳答案

您可以使用 types 中的 MethodType模块:

import types

obj.f = types.MethodType(f, obj)
obj.f()

但是你真的需要这个吗?寻找装饰器(例如),这是向类添加所需功能的更优雅的方式。

关于python - 在运行时如何将方法绑定(bind)到 python 中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33950842/

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