"jeremito" <[EMAIL PROTECTED]> escribió en el mensaje news:[EMAIL PROTECTED]
> Please excuse me if this is obvious to others, but I can't figure it > out. I am subclassing dict, but want to prevent direct changing of > some key/value pairs. For this I thought I should override the > __setitem__ method as such: > if key == 'xT': > raise AttributeError("""Can't change xT. Please change, > xF, xS, or xG""") Why using a dictionary? I'd use a simple class with properties: py> class Xs(object): # class names should be Uppercase ... def __init__(self, xS=1.0, xF=1.0, xG=1.0, nu=1.0, debug=0): ... self.xS = xS ... self.xF = xF ... self.nu = nu ... self.xG = xG ... xA = property(fget=lambda self: self.xG + self.xF) ... xT = property(fget=lambda self: self.xA + self.xS) ... py> xs = Xs(1.0, 0.95, 0.80, 0.70) py> print xs.xG 0.8 py> print xs.xA 1.75 py> print xs.xT 2.75 py> xs.xG = 0.5 py> print xs.xA 1.45 py> print xs.xT 2.45 py> xs.xA = 1.5 Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: can't set attribute py> xs.xT = 1.2 Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: can't set attribute py> -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list