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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4