setattr using invalid attribute names - bug or feature?

Meno dontaskme at doityourself.com
Mon Jun 14 14:02:06 EDT 2004


gerson.kurz at t-online.de (Gerson Kurz) wrote in message news:<40cdb3d5.2146906 at news.t-online.de>...
> I stumbled across this (while using my homebrewn enum class):
> 
>     class test:
>         pass
> 
>     instance = test()
>     setattr(instance, "THIS :*2+~# IS OBVIOUSLY INVALID", 123)
> 
> I would've expected some kind of error message here when calling
> setattr(); after all, its not a regular attribute? Plus, documentation
> says
> 
> "
>  Set a named attribute on an object; setattr(x, 'y', v) is equivalent
> to
>     ``x.y = v''.
> "
> 
> and you cannot write this:
> 
> instance.THIS :*2+~# IS OBVIOUSLY INVALID = 123

No, but you can write this:

>>> a = getattr(instance, "THIS :*2+~# IS OBVIOUSLY INVALID")
>>> print a
123

Meno.



More information about the Python-list mailing list