Я пытаюсь создать метод для запуска произвольного метода, переданного ему до тех пор, пока он не будет выполнен без ошибок.
def multiTry(method, sArg, **kwargs):
"""
Attempt a specified method until it runs without error.
Inputs:
method: method to be tried until it runs without error
sArg: string of all arguments to be passed to method
kwargs: all arguments needed for method
"""
for key, value in kwargs.items():
eval(key = value)
bDone = False
while not bDone:
try:
method(eval(sArg))
bDone = True
except:
pass
multiTry(method=methodToRun, sArg="myString, myNum", myString="hello", myNum=5)
Цель состоит в том, чтобы повторно попытаться:
methodToRun("hello", 5)
. .. пока он не запустится успешно, где methodToRun
- любой метод, а аргументы - любые аргументы.
Я понимаю, что оба оператора eval используются неправильно. Возможно, существует совершенно другой способ достижения той же цели? У меня есть несколько методов для индивидуального запуска до успешного завершения, и я не хотел бы помещать каждый из них в встроенные блоки try-кроме.