gpt4 book ai didi

python - 如何使用 type() 创建绑定(bind)方法?

转载 作者:太空宇宙 更新时间:2023-11-04 07:26:16 25 4
gpt4 key购买 nike

我正在动态生成一个函数并将其分配给一个类。这是我想要实现的一个简单/最小的例子:

def echo(obj):
print obj.hello

class Foo(object):
hello = "Hello World"

spam = type("Spam", (Foo, ), {"echo":echo})
spam.echo()

导致这个错误

Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: unbound method echo() must be called with Spam instance
as first argument (got nothing instead)

我知道如果我使用 @staticmethod 装饰器,我可以将 spam 作为参数传递给 echo,但在我的用例中这对我来说是不可能的。

如何让 echo 函数绑定(bind)到 Spam 并访问 self?有可能吗?

最佳答案

到目前为止,您只创建了一个类。您还需要创建对象,即该类的实例:

Spam = type("Spam", (Foo, ), {"echo":echo})
spam = Spam()
spam.echo()

如果你真的想让它成为类的一个方法,而不是一个实例方法,用类方法(而不是静态方法)包装它。

关于python - 如何使用 type() 创建绑定(bind)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1178337/

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