Найти - Пользователи
Полная версия: динамический код не работает в классе
Начало » Python для новичков » динамический код не работает в классе
1
habrman
 class C:
    
    def f(self):
        s='''def a(n):
                return n * n;'''
        exec(s)
        exec('b=a(5)')
        print(b)
c=C()
c.f()
почему код не работает?
если без класса то работает
PEHDOM
habrman
почему код не работает?
ну это достаточно старый баг, некоторые называют его фишкой подробнее тут
https://bugs.python.org/issue4831
вобщем пиши или так
         exec('print(b)')
или так
   print(locals()['b'])
можешь еще почитать обсждения тут:
https://stackoverflow.com/questions/15086040/behavior-of-exec-function-in-python-2-and-python-3
или тут:
https://stackoverflow.com/questions/1463306/how-does-exec-work-with-locals
FishHook
habrman
почему код не работает?
Какой питон вы используете? В 2.7 всё работает

C:\Python27\python.exe D:/test/test.py
25

Process finished with exit code 0

habrman
использую питон 3
locals() помогло
всем спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB