[Python-Dev] PEP 318: Properties (original) (raw)
Bob Ippolito bob at redivi.com
Sun Apr 4 21:22:09 EDT 2004
- Previous message: [Python-Dev] PEP 318: Properties
- Next message: [Python-Dev] Re: PEP 318: Decorators last before colon
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Apr 4, 2004, at 9:07 PM, Jewett, Jim J wrote:
Skip> x = 42
Skip> def x(self) [propget]: Skip> "Doc string for x" _Skip> return self.x Guido> It's broken. I expect this to raise an exception at some point. Guido> Beyond that, who cares? Jim> If so, then this decorator is a bad idea. Jim> I would expect 42 to be the initial value of the property x. Skip> Then it makes sense to put "x = 42" after the three property Skip> definitions (before the end of the class definition). Skip> Would that work? Not really. The documentation says "Properties are a neat way to implement attributes whose usage resembles attribute access, but whose implementation uses method calls." This suggests that creating a property creates a manager. In this case, the manager is created for an attribute that already exists. If it uses the previous value as the initial current value, that is what I expect. If it raises an exception ("I can't manage that! Someone beat me to it!"), I'll be annoyed, but live with the limitation. If it silently throws the value away, or raises an exception at run time -- that is bad. Yes, this is a variation on the "Properties do not work for classic classes, but you don't get a clear error when you try this." wart. But the code this decorator replaces:: x = property(getx, setx) does explicitly replace x, so I think this confusion may be specific to the decorator.
... have you ever used descriptors before?
Property descriptors are only functionally applicable to instances of the class where the descriptor lives. FooClass.x = 42 will replace the descriptor. It's possible to make a descriptor do something special when you fetch it from its class, but in this case FooClass doesn't even really exist when you are replacing the descriptor with something else!
-bob
- Previous message: [Python-Dev] PEP 318: Properties
- Next message: [Python-Dev] Re: PEP 318: Decorators last before colon
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]