Python 如何创建类型为()的绑定方法?

Python 如何创建类型为()的绑定方法?,python,Python,我动态生成一个函数并将其分配给一个类。这是我试图实现的一个简单/最少的示例: 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, i

我动态生成一个函数并将其分配给一个类。这是我试图实现的一个简单/最少的示例:

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)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:必须使用垃圾邮件实例调用未绑定的方法echo()
作为第一个参数(没有得到任何结果)
我知道如果我使用了
@staticmethod
装饰器,我可以将
spam
作为参数传递给echo,但在我的用例中这是不可能的


如何将
echo
函数绑定到
Spam
并访问
self
?有可能吗?

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

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

如果您确实希望它成为类上的方法,而不是实例方法,请使用classmethod(而不是staticmethod)包装它。

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

Spam = type("Spam", (Foo, ), {"echo":echo})
spam = Spam()
spam.echo()
如果您确实希望它是类上的方法,而不是实例方法,请使用classmethod(而不是staticmethod)包装它