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

rod*_*der 1 python

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

def echo(obj):
    print obj.hello

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

spam = type("Spam", (Foo, ), {"echo":echo})
spam.echo()
Run Code Online (Sandbox Code Playgroud)

导致此错误

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)
Run Code Online (Sandbox Code Playgroud)

我知道我是否使用了@staticmethod可以spam作为参数传递的装饰器来回显,但在我的用例中这对我来说是不可能的.

我如何获得echo绑定Spam和访问的功能self?有可能吗?

Mar*_*wis 8

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

Spam = type("Spam", (Foo, ), {"echo":echo})
spam = Spam()
spam.echo()
Run Code Online (Sandbox Code Playgroud)

如果你真的希望这是一个类的方法,而不是一个实例方法,请用classmethod(而不是staticmethod)包装它.