[pyar] Chequear si un objeto es mutable..

Claudio Freire klaussfreire en gmail.com
Lun Abr 18 16:55:31 ART 2011


2011/4/18 david weil <tenuki en gmail.com>:
> Estoy haciendo unas clases y sus instancias, según la clase, serán
> mutables o no.
>
> Eso me llevó a ver si hay alguna forma de saber si un objeto/instancia
> es mutable.
>
> Por todos lados, leí, que uno lo que tiene que hacer es fijarse el
> tipo/clase del objeto y según cual sea, determinar si es mutable o no.
> "An object’s mutability is determined by its type; for instance,
> numbers, strings and tuples are immutable, while dictionaries and
> lists are mutable."
> ( http://docs.python.org/py3k/reference/datamodel.html#objects-values-and-types
> )
>

Usualmente, hash(x) tira un TypeError si el objeto no es hashable. No
es lo mismo que mutable, pero es una aproximación.

Diccionarios, listas, y otros tipos basicos no son hashables,
justamente porque son mutables.

El tema es, las clases son todas hasheables por defecto. Había una
forma para hacerlas no hasheables:

class A(object):
   __hash__ = None

Pero sólo funciona con clases NUEVAS (no clásicas), y que hayan sido
explícitamente marcadas de esta forma.

Peor es nada, diría ;-)



More information about the pyar mailing list