David Moss wrote:
Hi,

I want to manage and control access to several important attributes in
a class and override the behaviour of some of them in various
subclasses.

Below is a stripped version of how I've implemented this in my current
bit of work.

It works well enough, but I can't help feeling there a cleaner more
readable way of doing this (with less duplication, etc).

Is this as good as it gets or can this be refined and improved
especially if I was to add in a couple more attributes some fairly
complex over-ride logic?

The extended property type in Python 2.6 makes it much easier to overwrite the getter, sett or deleter of a property:

http://docs.python.org/dev/library/functions.html?highlight=property#property

class C(object):
    def __init__(self): self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x

class D(C):
    @C.x.getter
    def x(self):
        return 2 * self._x

    @x.setter
    def x(self, value):
        self._x = value // 2

Christian

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to