我有一个类,我想在初始化时采用任意方法,根据上下文进行字符串解析。
使用在类外定义的方法,如下所述:Python在类定义外定义方法?
def my_string_method(self):
return self.var.strip()
class My_Class():
def __init__(self, string_method):
self.var = ' foo '
self.string_method = string_method
def use_string_method(self):
return self.string_method()
instance = My_Class(string_method=my_string_method)
print instance.use_string_method()
我得到错误"TypeError: use_string_method() takes exactly 1 argument (0 given)
"。
self
参数不应该隐式传递给use_string_method
吗?有没有一种方法可以定义函数从而发生这种情况,或者我需要显式地将自参数传递给类外定义的方法:
class My_Class():
def __init__(self, string_method):
self.var = ' foo '
self.string_method = string_method
def use_string_method(self):
return self.string_method(self)
您必须将传入的函数包装在"MethodType"中。
从您的init:
self.string_method = types.MethodType(string_method, self)
这将方法绑定到类,并允许它接收隐式self参数。确保import types
位于脚本的顶部。