2014-09-10 5 views
0

Я хотел бы предоставить метод класса в качестве параметра. Ниже приведен простой пример того, что мне нужно.Могу ли я предоставить метод класса 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.

+1

Я думаю, что вы ищете ['getattr'] (https://docs.python.org/2/library/functions.html#getattr). – BrenBarn

+0

Довольно странно иметь экземпляр списка с именем 'str1' (особенно когда вы продолжаете ссылаться на него в некоторых местах как на« строку »). Используйте правильные имена переменных! – Blckknght

+0

@Blckknght Изменен «строка» на «список». Невозможно изменить имя переменной, поскольку оно уже появляется в принятом ниже ответе. –

ответ

2
print getattr(self.str1, arg1)(1) 
+0

Пятно на! Благодаря! –

Смежные вопросы