Я хотел бы предоставить метод класса в качестве параметра. Ниже приведен простой пример того, что мне нужно.Могу ли я предоставить метод класса Python в качестве параметра?
Скажем, у меня есть класс, определенный как это:
class TestClass(object):
def __init__(self):
self.str1 = [1,2,3,4,5]
Теперь я хочу, чтобы добавить новый метод к этому классу, который будет выполнять некоторые операции в этом списке. Эта операция будет предоставлена в качестве параметра для этого метода. Так, например, это может выглядеть примерно так:
def testMethod(self, arg1):
print self.str1.arg1(1)
Где arg1
является метод списка классов.
Идея будучи в состоянии вызвать этот метод в следующей форме:
TC = TestClass()
TC.testMethod("index")
И ожидает, чтобы получить результат, как я хотел бы получить от:
print self.str1.index(1)
Если я запускаю его как , я получаю AttributeError
исключение:
AttributeError: 'list' object has no attribute 'arg1'
ПРИМЕЧАНИЕ: Этот вопрос попросил обобщить еще один вопрос, я описал here.
Я думаю, что вы ищете ['getattr'] (https://docs.python.org/2/library/functions.html#getattr). – BrenBarn
Довольно странно иметь экземпляр списка с именем 'str1' (особенно когда вы продолжаете ссылаться на него в некоторых местах как на« строку »). Используйте правильные имена переменных! – Blckknght
@Blckknght Изменен «строка» на «список». Невозможно изменить имя переменной, поскольку оно уже появляется в принятом ниже ответе. –