[pyar] Como hacer un objeto inmutable
Mariano Guerra
luismarianoguerra en gmail.com
Vie Oct 28 04:20:29 ART 2011
2011/10/28 Alejandro Santos <listas en alejolp.com>:
> Sin usar tuplas, namedtuples[1] ni extensiones en C, ¿cómo puedo hacer
> mi propio tipo de datos cuyas instancias sean inmutables garantizadas
> por el lenguaje? ¿es posible hacerlo usando clases, magia de
> decoradores y nada más?
aca va una con closures
def ReadOnlyPoint(xx, yy):
class Point(object):
def get_x(self):
return xx
def get_y(self):
return yy
x = property(get_x)
y = property(get_y)
return Point()
>>> from point import *
>>> p = ReadOnlyPoint(1,2)
>>> p.x
1
>>> p.y
2
>>> dir(p)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__',
'__getattribute__', '__hash__', '__init__', '__module__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
'__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'get_x',
'get_y', 'x', 'y']
>>> p.y = 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: can't set attribute
More information about the pyar
mailing list