Je viens de passer trop de temps sur un bug comme ce qui suit:Python: Une classe peut-elle interdire aux clients de définir de nouveaux attributs?
>>> class Odp():
def __init__(self):
self.foo = "bar"
>>> o = Odp()
>>> o.raw_foo = 3 # oops - meant o.foo
J'ai une classe avec un attribut. J'essayais de le régler et je me demandais pourquoi cela n'avait aucun effet. Ensuite, je suis retourné à la définition de classe d'origine, et j'ai vu que l'attribut était nommé quelque chose de légèrement différent. Ainsi, je créais/établissais un nouvel attribut au lieu de celui destiné à.
Tout d'abord, n'est-ce pas exactement le type d'erreur que les langages statiquement typés sont censés empêcher? Dans ce cas, quel est l'avantage du typage dynamique?
Deuxièmement, y a-t-il un moyen que j'aurais pu interdire lors de la définition Odp
, et ainsi me suis sauvé le problème?
Possible duplicate: http://stackoverflow.com/questions/3079306/how-to-protect-againt-typos-when-setting-value-for-class-members – detly