folks, what's wrong with this?
bruno.42.desthuilliers at websiteburo.invalid
Fri Apr 2 10:45:26 CEST 2010
Ani a écrit :
> Hi All:
> I am just a beginner in python. Can anyone please tell me what is
> wrong with this piece of code?
Robert already addressed your problem, so I'll just comment on a couple
> import copy
> class BaseDummyObject(object):
> def __init__(self):
This initializer is at best useless.
> def __getattr__(self, item):
The second parameter to __getattr__ is the name that is looked for, so
better to name it "name" or "attrname" or...
> return self.__dict__.__getitem__(item)
__getitem__ - like most __magicmethods__ - provides support for the
"subscript" operator, and as such is not supposed to be explicitely
called (except for a couple corner cases). This should just be:
> except KeyError:
> print "Attribute Error: attr %s of class %s non-existent!"
> %(item, self.__class__.__name__)
The canonical AttributeError message is "'<classname>' object has no
attribute '<attrname>'" - ok, doesn't matter much, but being consistent
with the core language is usually a good idea IMHO !-)
And now for the most import point: __getattr__ is only called as a
*last* resort. That is, after the attribute lookup mechanism will have
tried *and failed* to find the name in the instance's __dict__.
More information about the Python-list