Catching errors in attribute names at assigment
pawel_Kraszewski at wp.pl
Mon Jun 21 22:01:31 CEST 2004
Thomas Philips wrote:
> If one makes a typographical error when assigning a value to an
> attribute (i.e if one types ClassName.xyc = 10 instead of
> ClassName.xyz=10), a new attribute xyc will be created, and the error
> can later prove difficult to debug.
> Is there a way to check assignments when they are made and to allow
> only those that modify a restricted set of allowable attributes?
> Looking through ClassName.__dict__.keys() is perhaps one way to
> achieve this: Is there a simpler (i.e. more Pythonic) way to do it as
Yes, there are at least two ways
The "new" way is to use "new classes" - ones being children of "object"
class - where you have a special attribute __all__ .
If you say __all__=["a","b","c"], those 3 attributes are the only ones valid
for field/method accessing. So class.a=5 is ok, but class.d=5 raises
The "old" way is to override __getattr__ and __setattr__ and check for a
valid name before accessing.
Pawel Kraszewski FreeBSD/Linux
E-Mail/Jabber Phone ICQ GG
Pawel_Kraszewski at wp.pl +48 604 777447 45615564 69381
More information about the Python-list