У меня есть класс, который я хочу использовать для инициализации произвольного метода для использования для синтаксического анализа строк в зависимости от контекста.Ошибка использования метода класса, определенного за пределами класса
Используя метод, определенный вне класса, как описано здесь: Python define method outside of class definition?
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)
Ой, это сложно. У меня было что-то подобное, не удалось найти обходное решение :( – linusg