Python: невозможно использовать eval() для запуска методов объекта [дубликат]Python

Программы на Python
Гость
Python: невозможно использовать eval() для запуска методов объекта [дубликат]

Сообщение Гость »

Я пытаюсь использовать eval() для запуска динамического кода, но он, похоже, отклоняет объектные методы:

Код: Выделить всё

def GetHelp():
return 'Help'

class MyClass:
def __init__(self):
self.child = 5
def GetChild():
return self.child

x = eval('Get{}()'.format('Help'))
print(x)

obj = MyClass()
y = eval('obj.Get{}()'.format('Child'))
print(y)
Приведенный выше код дает мне:

Код: Выделить всё

Help
Traceback (most recent call last):
File "/Users/kakyo/Desktop/0.Dev/playground/python/hello_eval.py", line 14, in 
y = eval('obj.Get{}()'.format('Child'))
File "", line 1, in 
TypeError: GetChild() takes 0 positional arguments but 1 was given
Я пытался добавить obj в локальные файлы:

Код: Выделить всё

y = eval('obj.Get{}()'.format('Child'), {'obj': obj})
но получил ту же ошибку.

Подробнее здесь: https://stackoverflow.com/questions/539 ... ct-methods

Вернуться в «Python»