2012-03-11 2 views
0

Итак, у меня есть класс, как это:Как создать переменную функцию в классе в python 2.7?

class Test(object): 
    def call(self,instruction,data): 
     pass 

    def handle_foo(self,data): 
     print "Foo: %s" % data 

    def handle_bar(self,data): 
     print "%s: bar" % data 

И код вызова нравится:

t = Test() 
t.call("foo","abc") 
t.call("bar","def") 

Как сделать определение вызова вызова функций, вставляя переменную «инструкции» в имя функции?

Я попытался это, но он не работает

def call(self,instruction,data): 
    func = "self.handle_%s" % instruction 
    func(data) 
+2

Вы могли бы просто передать фактическую функцию в качестве параметра, тоже. Функции - это объекты. –

ответ

1

Вы можете использовать getattr, чтобы получить член объекта с именем участника в виде строки.

getattr(self, 'handle_' + instruction)(data) 
+0

Отлично работает, спасибо! Я соглашусь, как только таймер антибота будет тикать вниз. –

2

Это будет использовать метод GetAttr

func = getattr(self, 'handle_%s' % instruction) 
func(data) 
Смежные вопросы