A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2006-February/060762.html below:

[Python-Dev] The decorator(s) module

[Python-Dev] The decorator(s) moduleThomas Wouters thomas at xs4all.net
Sat Feb 11 13:51:02 CET 2006
On Fri, Feb 10, 2006 at 10:32:23PM +0100, Georg Brandl wrote:

> Unfortunately, a @property decorator is impossible...

Depends. You can do, e.g.,

def propertydef(propertydesc):
    data = propertydesc()
    if not data:
        raise ValueError, "Invalid property descriptors"
    getter, setter, deller = (data + (None, None))[:3]
    return property(fget=getter, fset=setter, fdel=deller,
                    doc=propertydesc.__doc__)

and use it like:

class X(object):
    def __init__(self):
        self._prop = None

    @propertydef
    def prop():
        "Public, read-only access to self._prop"
        def getter(self):
            return self._prop
        return (getter,)

    @propertydef
    def rwprop():
        "Public read-write access to self._prop"
        def getter(self):
            return self._prop
        def setter(self, val):
            self._prop = val
        def deller(self):
            self._prop = None
        return (getter, setter, deller)


    @propertydef
    def hiddenprop():
        "Public access to a value stored in a closure"
        prop = [None]
        def getter(self):
            return prop[0]
        def setter(self, val):
            prop[0] = val
        def deller(self):
            prop[0] = None
        return (getter, setter, deller)

-- 
Thomas Wouters <thomas at xs4all.net>

Hi! I'm a .signature virus! copy me into your .signature file to help me spread!
More information about the Python-Dev mailing list

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