Как я могу зациклить dict и использовать значение как функции объекта? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть словарь значений и инициализирую объект.Словарь значений содержит все модули объекта, так как я могу добиться чего-то вроде этого?

test_action = {
    '1': 'addition',
    '2': 'subtraction'
}

class test:
    def __init__(self, a,b,c):
        self.a = a
        self.b = b
        self.c = c

    def addition(self):
        return self.a + self.b + self.c

    def subtraction(self):
        return self.a - self.b - self.c


def main():
    xxx = test(10,5,1)
    for key,action in test_action.items():
        print(xxx.action())

Ответы [ 2 ]

0 голосов
/ 11 октября 2018
def main():
    xxx = test(10,5,1)
    for key,action in test_action.items():
        if hasattr(xxx, action):
            print "perforning: {}".format(action)
            print xxx.__getattribute__(action)()

#op
perforning: addition
16
perforning: subtraction
4
0 голосов
/ 11 октября 2018

Вы должны ссылаться на функции как на объекты, а не на строки, так что:

class test:
    def __init__(self, a,b,c):
        self.a = a
        self.b = b
        self.c = c

    def addition(self):
        return self.a + self.b + self.c

    def subtraction(self):
        return self.a - self.b - self.c

test_action = {
    '1': test.addition,
    '2': test.subtraction
}

xxx = test(10,5,1)
for key, action in test_action.items():
    print(key, action(xxx))

будет выводить:

1 16
2 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...