else: raise raise AttributeError("object %s has no attribute %s" %
(self.__class__, attr))
Franchement, tu te compliques inutilement la vie. Et bien sûr, c'est __setattr__ qui empêche qu'on crée un nouvel attribut, pas __getattr__.
c'est évident. Dans mon esprit, quand je disais d'utiliser __getattr__ cela voulait dire "le couple __getattr__ __setattr__".
Bruno Desthuilliers
Bruno Desthuilliers wrote:
Olivier Ravard wrote:
Bruno Desthuilliers wrote:
(snip)
Utiliser __getattr__
Pour empêcher de *créer* un nouvel attribut ?
bien sûr.
(snip)
Franchement, tu te compliques inutilement la vie. Et bien sûr, c'est __setattr__ qui empêche qu'on crée un nouvel attribut, pas __getattr__.
c'est évident. Dans mon esprit, quand je disais d'utiliser __getattr__ cela voulait dire "le couple __getattr__ __setattr__".
Ce n'est peut-être pas si évident pour un débutant !-)
Et surtout, il n'y a aucun besoin d'utiliser __getattr__ , ça n'aboutit qu'à complexifier arbitrairement le code - et en l'occurrence à introduire un joli bug, puisqu'avec ta solution, la classe devient un borg (ie: toutes les instances partagent les mêmes valeur d'attributs...).
Bref, encore une fois, plus on fait simple, mieux ça marche...
Bruno Desthuilliers wrote:
Olivier Ravard wrote:
Bruno Desthuilliers wrote:
(snip)
Utiliser __getattr__
Pour empêcher de *créer* un nouvel attribut ?
bien sûr.
(snip)
Franchement, tu te compliques inutilement la vie. Et bien sûr, c'est
__setattr__ qui empêche qu'on crée un nouvel attribut, pas __getattr__.
c'est évident. Dans mon esprit, quand je disais d'utiliser __getattr__
cela voulait
dire "le couple __getattr__ __setattr__".
Ce n'est peut-être pas si évident pour un débutant !-)
Et surtout, il n'y a aucun besoin d'utiliser __getattr__ , ça n'aboutit
qu'à complexifier arbitrairement le code - et en l'occurrence à
introduire un joli bug, puisqu'avec ta solution, la classe devient un
borg (ie: toutes les instances partagent les mêmes valeur d'attributs...).
Bref, encore une fois, plus on fait simple, mieux ça marche...
Franchement, tu te compliques inutilement la vie. Et bien sûr, c'est __setattr__ qui empêche qu'on crée un nouvel attribut, pas __getattr__.
c'est évident. Dans mon esprit, quand je disais d'utiliser __getattr__ cela voulait dire "le couple __getattr__ __setattr__".
Ce n'est peut-être pas si évident pour un débutant !-)
Et surtout, il n'y a aucun besoin d'utiliser __getattr__ , ça n'aboutit qu'à complexifier arbitrairement le code - et en l'occurrence à introduire un joli bug, puisqu'avec ta solution, la classe devient un borg (ie: toutes les instances partagent les mêmes valeur d'attributs...).
Bref, encore une fois, plus on fait simple, mieux ça marche...
Olivier Ravard
Bruno Desthuilliers wrote:
Bruno Desthuilliers wrote:
Olivier Ravard wrote:
Bruno Desthuilliers wrote:
(snip)
Utiliser __getattr__
Pour empêcher de *créer* un nouvel attribut ?
bien sûr.
(snip)
Franchement, tu te compliques inutilement la vie. Et bien sûr, c'est __setattr__ qui empêche qu'on crée un nouvel attribut, pas __getattr__.
c'est évident. Dans mon esprit, quand je disais d'utiliser __getattr__ cela voulait dire "le couple __getattr__ __setattr__".
Ce n'est peut-être pas si évident pour un débutant !-)
Et surtout, il n'y a aucun besoin d'utiliser __getattr__ , ça n'aboutit qu'à complexifier arbitrairement le code - et en l'occurrence à introduire un joli bug, puisqu'avec ta solution, la classe devient un borg (ie: toutes les instances partagent les mêmes valeur d'attributs...).
C'est bien (mon interprétation) de ce qui était demandé initialement ...
Bref, encore une fois, plus on fait simple, mieux ça marche...
Bruno Desthuilliers wrote:
Bruno Desthuilliers wrote:
Olivier Ravard wrote:
Bruno Desthuilliers wrote:
(snip)
Utiliser __getattr__
Pour empêcher de *créer* un nouvel attribut ?
bien sûr.
(snip)
Franchement, tu te compliques inutilement la vie. Et bien sûr, c'est
__setattr__ qui empêche qu'on crée un nouvel attribut, pas __getattr__.
c'est évident. Dans mon esprit, quand je disais d'utiliser __getattr__
cela voulait
dire "le couple __getattr__ __setattr__".
Ce n'est peut-être pas si évident pour un débutant !-)
Et surtout, il n'y a aucun besoin d'utiliser __getattr__ , ça n'aboutit
qu'à complexifier arbitrairement le code - et en l'occurrence à
introduire un joli bug, puisqu'avec ta solution, la classe devient un
borg (ie: toutes les instances partagent les mêmes valeur d'attributs...).
C'est bien (mon interprétation) de ce qui était demandé initialement ...
Bref, encore une fois, plus on fait simple, mieux ça marche...
Franchement, tu te compliques inutilement la vie. Et bien sûr, c'est __setattr__ qui empêche qu'on crée un nouvel attribut, pas __getattr__.
c'est évident. Dans mon esprit, quand je disais d'utiliser __getattr__ cela voulait dire "le couple __getattr__ __setattr__".
Ce n'est peut-être pas si évident pour un débutant !-)
Et surtout, il n'y a aucun besoin d'utiliser __getattr__ , ça n'aboutit qu'à complexifier arbitrairement le code - et en l'occurrence à introduire un joli bug, puisqu'avec ta solution, la classe devient un borg (ie: toutes les instances partagent les mêmes valeur d'attributs...).
C'est bien (mon interprétation) de ce qui était demandé initialement ...
Bref, encore une fois, plus on fait simple, mieux ça marche...
Bruno Desthuilliers
Bruno Desthuilliers wrote:
(snip)
et en l'occurrence à introduire un joli bug, puisqu'avec ta solution, la classe devient un borg (ie: toutes les instances partagent les mêmes valeur d'attributs...).
C'est bien (mon interprétation) de ce qui était demandé initialement ...
Alors relis... La demande de l'OP était d'empêcher d'ajouter de nouveaux
attributs à une instance.
Bruno Desthuilliers wrote:
(snip)
et en
l'occurrence à introduire un joli bug, puisqu'avec ta solution, la
classe devient un borg (ie: toutes les instances partagent les mêmes
valeur d'attributs...).
C'est bien (mon interprétation) de ce qui était demandé initialement ...
Alors relis... La demande de l'OP était d'empêcher d'ajouter de nouveaux
et en l'occurrence à introduire un joli bug, puisqu'avec ta solution, la classe devient un borg (ie: toutes les instances partagent les mêmes valeur d'attributs...).
C'est bien (mon interprétation) de ce qui était demandé initialement ...
Alors relis... La demande de l'OP était d'empêcher d'ajouter de nouveaux