> currently, PEP 8 does not have any advice about the preferred style > in defining properties. There are only two places in the standard > library where they are used (socket.py and xml/dom/minicompat.py), so > that doesn't provide much information either. Personally, I don't like the > namespace cluttering caused by defining __get, __set and/or __del. Since > I saw someone[0] on c.l.py using it, I always use this style: > > def mtime(): > doc = "Modification time" > > def get(self): > return os.path.getmtime(str(self)) > > def set(self, t): > return os.utime(str(self), (self.atime, t)) > > return get, set, None, doc > mtime = property(*mtime()) > > I like it, because it's very readable for me, and doesn't clutter the > namespace. Two questions about this style: > > - Is it tolerable to use it in the standard library (PrePEP)? > - Should it be advised for or against in PEP 8, or neither? I don't like it, and I'd rather not see this become a standard idiom. Personally, I don't see the issue with the namespace cluttering (what's bad about it?) and I actually like that the getter/setter functions are also explicitly usable (hey, you might want to use one of these as the key argument to sort :-). My objection against the def is that it requires a lot of sophistication to realize that this is a throw-away function, called just once to return argument values for the property call. It might also confuse static analyzers that aren't familiar with this pattern. --Guido van Rossum (home page: http://www.python.org/~guido/)
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