@property decorator doesn't raise exceptions
Peter Otten
__peter__ at web.de
Fri Oct 24 12:58:03 EDT 2008
Rafe wrote:
> On Oct 24, 2:21 am, Christian Heimes <li... at cheimes.de> wrote:
>> Rafewrote:
>> > Hi,
>>
>> > I've encountered a problem which is making debugging less obvious than
>> > it should be. The @property decorator doesn't always raise exceptions.
>> > It seems like it is bound to the class but ignored when called. I can
>> > see the attribute using dir(self.__class__) on an instance, but when
>> > called, python enters __getattr__. If I correct the bug, the attribute
>> > calls work as expected and do not call __getattr__.
>>
>> > I can't seem to make a simple repro. Can anyone offer any clues as to
>> > what might cause this so I can try to prove it?
>>
>> You must subclass from "object" to get a new style class. properties
>> don't work correctly on old style classes.
>>
>> Christian
>
> All classes are a sub-class of object. Any other ideas?
Hard to tell when you don't give any code.
>>> class A(object):
... @property
... def attribute(self):
... raise AttributeError
... def __getattr__(self, name):
... return "nobody expects the spanish inquisition"
...
>>> A().attribute
'nobody expects the spanish inquisition'
Do you mean something like this? I don't think the __getattr__() call can be
avoided here.
Peter
More information about the Python-list
mailing list