Как сделать переменную функцию в классе в Python 2.7? - PullRequest
0 голосов
/ 11 марта 2012

Итак, у меня есть такой класс:

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 ]

2 голосов
/ 11 марта 2012

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

func = getattr(self, 'handle_%s' % instruction)
func(data)
1 голос
/ 11 марта 2012

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

getattr(self, 'handle_' + instruction)(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...