dmytro starosud <d.staro...@gmail.com> writes: > > I think I'm being realized that Python allows to do everything. > Maybe I will not try to find "really hidden encapsulation". :)
I think it's a wise decision :) Just to challenge you a bit, here is another (doomed) attempt at having private attributes for object instances: def private_maker(): class Private: pass privmap = {} def private(f): def wrapper(self, *args, **kwargs): priv = privmap.setdefault(self, Private()) return f(self, priv, *args, **kwargs) return wrapper return private private = private_maker() class A: @private def __init__(self, private, x): private.x = x @property @private def x(self, private): return private.x del private a = A(2) Can you change the value of a.x? (Hint: my shortest solution is of the form A.*.*[*].*[*].x = 3) > p.s. what do you think about the presence of two fields v_min (in > first message): > “s.__dict__['v_min']” and “s.v_min”? Are you referring to the fact that in Python, if an attribute is a property, the __dict__ lookup on the instance is not performed? As in: >>> class A: ... @property ... def x(self): return 42 ... >>> a = A() >>> a.__dict__['x'] = 24 >>> a.x 42 >>> a.__dict__['x'] 24 This is documented, but I actually don't know the reason for it. -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list