Fred L. Drake, Jr. wrote: > """Sample implementation of the docslots idea.""" > > import sys > > > class slotproperty(object): > def __init__(self, name, docstring): > self.__name__ = name > self.__doc__ = docstring > self._slotname = "_slotproperty_" + name > > def __get__(self, inst, cls=None): > return getattr(inst, self._slotname) > > def __set__(self, inst, value): > setattr(inst, self._slotname, value) > > > def docslots(**kw): > namespace = sys._getframe(1).f_locals > __slots__ = namespace.get("__slots__", ()) > __slots__ = list(__slots__) > for name, docstring in kw.iteritems(): > prop = slotproperty(name, docstring) > if name in __slots__: > __slots__.remove(name) > __slots__.append(prop._slotname) > namespace[name] = prop > namespace["__slots__"] = tuple(__slots__) Thanks, that at least gives me a framework to try out some ideas. I'm concerned about something though. Doesn't this implementation impose an overhead on access of slots with doc strings, or can a C implementation be made just as efficient as normal slots? I'm also wondering about Guido's comment. Even if the __slots__ handler were extended to handle docstrings directly via dict values, wouldn't metaclasses still be free to intercept the dict for other uses? -John -- http:// if ile.org/
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