Уведомления

Группа в Telegram: @pythonsu

#1 Июль 1, 2019 09:46:46

habrman
Зарегистрирован: 2019-07-01
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

динамический код не работает в классе

 class C:
    
    def f(self):
        s='''def a(n):
                return n * n;'''
        exec(s)
        exec('b=a(5)')
        print(b)
c=C()
c.f()
почему код не работает?
если без класса то работает

Офлайн

#2 Июль 1, 2019 10:11:15

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

динамический код не работает в классе

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



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июль 1, 2019 10:14:00)

Офлайн

#3 Июль 1, 2019 10:26:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

динамический код не работает в классе

habrman
почему код не работает?
Какой питон вы используете? В 2.7 всё работает

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

Process finished with exit code 0



Отредактировано FishHook (Июль 1, 2019 10:26:47)

Офлайн

#4 Июль 1, 2019 11:34:08

habrman
Зарегистрирован: 2019-07-01
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

динамический код не работает в классе

использую питон 3
locals() помогло
всем спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version