[Python-Dev] Re: Python-Dev Digest, Vol 9, Issue 16 (original) (raw)

Edward Loper edloper at gradient.cis.upenn.edu
Sun Apr 4 20:33:57 EDT 2004


How would this be interpreted? x = 42 def x(self) [propget]: "Doc string for x" _return self.x

That is, there is already an (otherwise invalid) 'x' in the calling scope when propget() is called. Do the property doodads just need to be bulletproofed or should an exception be raised?

[GvR said:]

It's broken. I expect this to raise an exception at some point. Beyond that, who cares?

[Jim said:]

If so, then this decorator is a bad idea.

I would expect 42 to be the initial value of the property x.

That doesn't make sense. If you want to set a default value, you'd say:

 __x = 42

A property's getter/setter/deleter can perform arbitrary actions, and in the general case there's no sensible way to define an "initial value" for a property. E.g., consider:

 class A:
     def getX(self):
         return random.choice(['apple', 'orange', 'grape'])
     x = property(getX)

If this still doesn't make sense, go read the docs for properties: <http://www.python.org/2.2.2/descrintro.html#property>

[Skip said:]

Then it makes sense to put "x = 42" after the three property definitions (before the end of the class definition). Would that work?

No, that would just overwrite x with the value 42 (throwing away the property object).

-Edward



More information about the Python-Dev mailing list