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)包装它