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? #!/usr/bin/env python class A(object): def __init__(self): self._x = None self._y = None def _set_x(self, value): self._x = value def _get_x(self): return self._x x = property(_get_x, _set_x) def _set_y(self, value): self._y = value def _get_y(self): return self._y y = property(_get_y, _set_y) class B(A): def __init__(self): self._z = None super(B, self).__init__() def _set_x(self, x): # An example subclass 'set' override. if x == 10: raise Exception('%r is invalid!' % x) self._x = x x = property(A._get_x, _set_x) def _set_z(self, value): self._z = value def _get_z(self): return self._z z = property(_get_z, _set_z) del A._get_x, A._set_x, A._get_y, A._set_y del B._set_x, B._get_z, B._set_z -- http://mail.python.org/mailman/listinfo/python-list