@Anon356

Приветствуется ли использование в коде переменных не известные компилятору до компиляции кода?

Я новичок в python я столкнулся с тем что мне нужно сделать поле 8x8 квадратов в Tkinter, но делать его в ручную это долго, я почитал документацию и увидел функции exec() и eval().
суть вопроса вот в чём:
from tkinter import *
class Main():
    def do_squares(self, number):
        for sqr_num in range(0, number):
            exec('self.square_' + str(sqr_num) + '=First()')
    def do_smthing_with_sqr(self, name):
        exec('self.' + name + '.value_1=False')

class First():
    def __init__(self):
        self.value_1 = 'Something'
        self.value_2 = True
        self.Value_3 = 0

if __name__ == '__main__':
    Instance = Main()
    Instance.do_squares(64)
    print(Instance.square_62.value_1)
    Instance.do_smthing_with_sqr('square_62')
    print(Instance.square_62.value_1)

всё работает верно но вопрос в том, приветствуется ли данный подход,
print(Instance.square_62.value_1)
ведь в данной строке кода мы лишь подсознательно понимаем что переменная "square_62" будет создана но на данный момент её нет
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 1
@alfa22
Питон является интерпретируемым язком(не компилируемым). Именно поэтому не возникает ошибок компиляции, так как ничего не компилируется.
Код вполняется строчка за строчкой интерпретатором. И на момент, когда происходит обращение к Instance.square_62.value_1, переменная уже создана и существует.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы