[pyar] Como hacer un objeto inmutable
Alejandro Santos
listas en alejolp.com
Vie Oct 28 01:28:16 ART 2011
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?
Hasta ahora llegué acá:
>>> class ReadOnlyPoint(object):
... __slots__ = ('_x', '_y')
... def __init__(self, x, y):
... self._x = x
... self._y = y
... def getx(self):
... return self._x
... def gety(self):
... return self._y
... x = property(getx)
... y = property(gety)
...
>>> p = ReadOnlyPoint(2, 3)
>>> print p.x, p.y
2 3
>>> p.x = 9
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: can't set attribute
>>> p._x = 9
>>> print p.x, p.y
9 3
[1] http://docs.python.org/library/collections.html#collections.namedtuple
--
Alejandro Santos
More information about the pyar
mailing list