Właśnie spędziłem zbyt długo na błąd jak poniżej:Python: Czy klasa może zakazać klientom ustawiania nowych atrybutów?
>>> class Odp():
def __init__(self):
self.foo = "bar"
>>> o = Odp()
>>> o.raw_foo = 3 # oops - meant o.foo
Mam klasy z atrybutem. Próbowałem to ustawić i zastanawiałem się, dlaczego nie przyniosło to efektu. Następnie powróciłem do pierwotnej definicji klasy i zobaczyłem, że atrybut został nazwany czymś nieco innym. Tak więc tworzyłem/ustawiałem nowy atrybut zamiast tego, który ma być.
Po pierwsze, czy nie jest to dokładnie ten typ błędu, który ma zapobiegać w statycznie napisanych językach? W takim razie jaka jest zaleta pisania dynamicznego?
Po drugie, czy istnieje sposób, w jaki mogłem zakazać tego podczas definiowania Odp
, a tym samym uratowałem sobie kłopot?
Możliwy duplikat: http://stackoverflow.com/questions/3079306/how-to-protect-againt-typos-when-setting-value-for-class-members – detly