@property decorator doesn't raise exceptions

Peter Otten __peter__ at web.de
Fri Oct 24 18:58:03 CEST 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