Ich habe eine Menge von Python-Code zu schreiben, die wie das aussehen wird folgende:Python eval innerhalb einer Klasse
class MyClass(object):
...
...
...
def handle_request(self, request):
attr1 = self.__get_attr1(request)
self.__validate_attr1(attr1)
attr2 = self.__get_attr2(request)
self.__validate_attr2(attr2)
attr3 = self.__get_attr3(request)
self.__validate_attr1(attr3)
...
...
...
attrn = self.__get_attrn(request)
self.__validate_attrn(attr1)
Um mein Leben einfacher mache ich dachte, dass ich folgendes tun könnte:
class MyClass(object):
...
...
...
def handle_request(self, request):
attr_list = ('attr1', 'attr2', 'attr3', ..., 'attrn');
for a in attr_list:
locals()[a] = eval('self.__get_{}(request)'.format(a))
eval('self.__validate_{}'.format(a)
jedoch, wenn ich diesen Code ausführen ich einen folgenden Fehler bekommen:
AttributeError: 'MyClass' object has no attribute '__get_attr1'
klar bin ich etwas fehlt groß, aber ich bin nicht sur Was genau?
Sie versuchen eindeutig nicht den Wert von '__get_attr1' definiert, bevor es zu benutzen. –
@ ÉbeIsaac Angenommen, __get_attr-Methoden sind definiert. – flashburn
Ich kann, aber schade, Ihr Programm könnte nicht das Gleiche tun. Könnten Sie '__get_attr1' auf andere Weise als' eval' aufrufen? –