Я слишком долго тратил на ошибку, как показано ниже:
>>> class Odp():
def __init__(self):
self.foo = "bar"
>>> o = Odp()
>>> o.raw_foo = 3 # oops - meant o.foo
У меня есть класс с атрибутом. Я пытался установить это и задавался вопросом, почему это не повлияло. Затем я вернулся к первоначальному определению класса и увидел, что атрибут был назван чем-то немного другим. Таким образом, я создавал/устанавливал новый атрибут вместо того, который имел в виду.
Во-первых, разве это не тот тип ошибки, который должны предотвращать статически типизированные языки? В этом случае в чем преимущество динамического набора текста?
Во-вторых, есть ли способ, которым я мог бы запретить это при определении Odp
, и таким образом избавил себя от неприятностей?