Python 使用类外定义的类方法时出错
我有一个类,我想在初始化时采用任意方法,根据上下文用于字符串解析 使用在类之外定义的方法(如此处所述): 我得到了错误“Python 使用类外定义的类方法时出错,python,class,methods,Python,Class,Methods,我有一个类,我想在初始化时采用任意方法,根据上下文用于字符串解析 使用在类之外定义的方法(如此处所述): 我得到了错误“TypeError:use\u string\u method()正好接受1个参数(给定0)” self参数是否应该隐式传递给use\u string\u方法? 有没有一种方法可以定义函数,从而发生这种情况,或者我是否需要显式地将自参数传递给类外定义的方法: class My_Class(): def __init__(self, string_method):
TypeError:use\u string\u method()正好接受1个参数(给定0)
”
self
参数是否应该隐式传递给use\u string\u方法
?
有没有一种方法可以定义函数,从而发生这种情况,或者我是否需要显式地将自参数传递给类外定义的方法:
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参数。确保在脚本顶部导入类型 哎哟,这太棘手了。我也遇到过类似的问题,但找不到解决方法:(另一个选项是将其包装在
functools.partial()
或一个为您传递self的lambda中。
self.string_method = types.MethodType(string_method, self)