properties & exceptions

Chuck Esterbrook ChuckEsterbrook at yahoo.com
Mon Apr 14 02:24:54 EDT 2003


On Sunday 13 April 2003 05:30 pm, Saveen Reddy [MSFT] wrote:
> I was suprised by a python behavior I saw concerning exceptions thrown
> when accessing a class through a property. Essentially, I am seeing an
> unexpected exception, one that implies the property doesn't exist when
> in fact it does. I haven't found any docs that explain this behavior
> and so my questions are (1) is this behavior "by-design"? and (2)
> Besides not using properties, is there a workaround?

On Sunday 13 April 2003 06:05 pm, Mike C. Fletcher wrote:
> Any chance you don't have a __metaclass__ = type declaration?  You
> don't subclass object in the example you cite, and without one of
> those properties just don't work.

I reported this behavior as a bug some time ago, but was told it wasn't 
a bug because I didn't subclass object. However, it's very deceptive 
and Python usually either works or gives a meaningful exception, so 
let's call it a "flaw". For example, if properties just don't work in 
classes not derived from object, then the Pythonic thing to do would be 
to raise a CannotUsePropertiesInOldClasses exception when trying to 
create them.

In any case, the reason I'm replying here is to report that in Python 
2.3a2, the bug, er I mean the flaw, has been fixed: exceptions in 
properties propagate correctly regardless of the base classes. That's 
great since it will reduce confusion. Plus, I like to use properties in 
wxPython subclasses, but cannot currently change wxObject to inherit 
object.

-- 
Chuck
http://ChuckEsterbrook.com





More information about the Python-list mailing list