我正在动态生成一个函数并将其分配给一个类。这是我想要实现的一个简单/最小的例子:
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
函数绑定到Spam
并访问self
?它有可能吗?
答案 0 :(得分:8)
到目前为止,您只创建了一个类。您还需要创建对象,即该类的实例:
Spam = type("Spam", (Foo, ), {"echo":echo})
spam = Spam()
spam.echo()
如果你真的希望这是一个类的方法,而不是一个实例方法,请用classmethod(而不是staticmethod)包装它。