Ich übertrage ein Testframework von Python2 nach Python3. Ich habe Probleme mit der exec-Anweisung zur exec-Funktionsänderung. Zur Laufzeit entscheide ich mich abhängig von einer xls-Datei, welche Funktion aufgerufen wird. Ich habe versucht, local() und global() und versuchte auch die execHelper anstelle von exec (siehe Beispiel unten) Ich versuchte auch die Namespace-Technik der exechelper-Funktion direkt in der Testfunktion, aber immer einige Namen im Namespace nicht gefunden. ... irgendwelche Vorschläge?exec python2 vs python3
def execHelper(command,callerobject):
ns = {}
exec(command,ns)
for name, value in ns.items():
setattr(callerobject, name, value)
def myfunction2(val1,val2):
return val1 * val2
class myclass():
def myfunction1(self,val1,val2):
return val1 + val2
def test(self):
a = 5
self.b = 10
exec("result = self.myfunction1(a,self.b)+myfunction2(a,self.b)")
print(result)
test = myclass()
test.test()
Warum brauchen Sie dort Exec? –
es ist nur ein einfaches Beispiel, um das Problem zu zeigen, natürlich würde ich das in diesem Fall nicht benötigen. aber mit diesem Beispiel wird das Problem am einfachsten erklärt – kurtvds
Können Sie den Fall zeigen, wo es Sinn macht, es zu benutzen? –