Appeler une méthode par son nom sans utiliser eval
Bonjour,
le code suivant fonctionne mais il me semble que l'on peut faire sans eval mais je n'arrive plus à trouver la discussion où j'avais lu cela :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #!/usr/bin/env python
#coding=utf-8
class test():
def callMethod(self, n):
n = str(n)
try:
eval('self.method' + n + '()')
except:
print 'method' + n + ' does not existe.'
def method1(self):
print '1'
def method2(self):
print '2'
def method3(self):
print '3'
pourTester = test()
for n in range(1, 4):
pourTester.callMethod(n) |