Ich habe gerade zu lange auf einen Fehler wie folgt aus:Python: Kann eine Klasse Clients verbieten, neue Attribute zu setzen?
>>> class Odp():
def __init__(self):
self.foo = "bar"
>>> o = Odp()
>>> o.raw_foo = 3 # oops - meant o.foo
ich eine Klasse mit einem Attribut haben. Ich versuchte es einzustellen und fragte mich, warum es keinen Effekt hatte. Dann ging ich zurück zur ursprünglichen Klassendefinition und sah, dass das Attribut etwas anderes genannt wurde. Daher habe ich ein neues Attribut erstellt/gesetzt, anstatt das, was gemeint ist.
Erstens, ist das nicht genau die Art von Fehler, die statisch typisierte Sprachen verhindern sollen? Was ist in diesem Fall der Vorteil der dynamischen Typisierung?
Zweitens, gibt es einen Weg, ich könnte dies bei der Definition Odp
verboten haben, und damit mir die Mühe erspart?
Mögliche Duplikate: http://StackOverflow.com/Questions/3079306/How-to-protect-againt-types-when-setting-value-for-class-Members – detly