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)