关于python:使用在类外定义的类方法时出错

Error Using Class Method Defined Outside of Class

我有一个类,我想在初始化时使用一个任意的方法来根据上下文进行字符串解析。

使用在类外部定义的方法,如这里所讨论的:python在类定义外部定义方法?

1
2
3
4
5
6
7
8
9
10
11
12
13
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()

我得到的错误是"EDOCX1×0"。

难道不应该将self参数隐式地传递给use_string_method吗?有没有一种方法可以定义这样的函数,或者我需要显式地将自变量传递给类外部定义的方法,例如:

1
2
3
4
5
6
7
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"。

从你的内心深处:

1
self.string_method = types.MethodType(string_method, self)

这将方法绑定到类,并允许它接收隐式自参数。确保你的脚本顶部是import types