Почему допускается добавление атрибутов к уже созданному объекту?

Я изучаю Python, и, хотя я думаю, что я понял всю концепцию и понятие Python, сегодня я наткнулся на кусок кода, который я не полностью понял:

Скажем, у меня есть класс, который должен определять Круги, но не имеет тела:

class Circle():
    pass

Поскольку я не определил никаких атрибутов, как я могу это сделать:

my_circle = Circle()
my_circle.radius = 12

Странная часть в том, что Python принимает приведенное выше утверждение. Я нене понимаю, почему Python неподнятьundefined name error, Я понимаю, что черездинамическая типизация Я просто привязываю переменные к объектам всякий раз, когда хочу, но не должент атрибутradius существуют вCircle класс, чтобы позволить мне сделать это?

РЕДАКТИРОВАТЬ: Много чудесной информации в ваших ответах!Спасибо всем за все эти фантастические ответы! Это'Жаль, что я могу отметить только один ответ.

Ответы на вопрос(7)

Ваш ответ на вопрос