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 other points:

import copy
class BaseDummyObject(object):

    def __init__(self):
        pass

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...

        try:
            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:

              return self.__dict__[item]


        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__.


HTH
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to