I don't use properties that much, but when I use them I put them *outside* the class, in a property factory. Here is an example I have prepared for my course at PyUK, using a property to crypt a password attribute:
class User(object): def __init__(self, username, password): self.username, self.password = username, password def cryptedAttribute(seed="x"): def get(self): return getattr(self, "_pw", None) def set(self, value): self._pw = crypt(value, seed) return property(get, set) User.pw = cryptedAttribute() I feel that: 1) separation of concerns is of the utmost importance; 2) classes should be kept as short as possible. Notice that in this design getters and setters are really hidden from the user, which may be or may be not what you want. Michele Simionato -- http://mail.python.org/mailman/listinfo/python-list