Articles of inmutabilidad

Beneficios no técnicos de tener un tipo de cuerda inmutable.

Me pregunto sobre los beneficios de tener el tipo de cadena inmutable desde el punto de vista de los progtwigdores. Los beneficios técnicos (en el lado del comstackdor / idioma) pueden resumirse principalmente en que es más fácil hacer optimizaciones si el tipo es inmutable. Lea aquí para una pregunta relacionada. Además, en un tipo […]

¿Son las tuplas realmente inmutables en Python?

Una de las preguntas que enfrenté hoy, que probó la inmutabilidad de las tuplas en Python: Entrevistador : ¿Son las tuplas inmutables en Python? Yo : si Entrevistador : Entonces, ¿qué se print(t1) aquí print(t1) ? t1 = (4, 5) t1 = t1 + (91, 10) print(t1) Yo : (4, 5, 91, 10) Entrevistador : […]

Diccionario inmutable en Python 3: cómo hacer que las vistas de los diccionarios de teclas (), elementos () y valores () sean inmutables

Versión corta: ¿Cuál es la mejor manera de anular dict.keys() y amigos para evitar que modifique accidentalmente mi (supuestamente) diccionario inmutable en Python 3? En una pregunta reciente, pregunté sobre Hashing un diccionario inmutable en Python . Desde entonces, he creado un diccionario de hashable inmutable con el que estoy contento. Sin embargo, me di […]

¿Cómo implementar “__iadd __ ()” para un tipo inmutable?

Me gustaría subclasificar un tipo inmutable o implementar uno propio que se comporte como lo hace un int , como se muestra en la siguiente sesión de consola: >>> i=42 >>> id(i) 10021708 >>> i.__iadd__(1) Traceback (most recent call last): File “”, line 1, in AttributeError: ‘int’ object has no attribute ‘__iadd__’ >>> i += […]

¿Cómo obtener un elemento arbitrario de un frozenset?

Me gustaría obtener un elemento de un frozenset (sin modificarlo, por supuesto, ya que los frozensets son inmutables). La mejor solución que he encontrado hasta ahora es: s = frozenset([‘a’]) iter(s).next() que devuelve, como se esperaba: ‘a’ En otras palabras, ¿hay alguna forma de “hacer estallar” un elemento de un frozenset sin que realmente lo […]

Python: ¿por qué puedo poner un objeto mutable en un dict o set?

Dado el siguiente ejemplo, class A(object): pass a = A() ax = 1 Obviamente, una es mutable, y luego la coloco en un conjunto, set([a]) Tuvo éxito ¿Por qué puedo poner un objeto mutable como “a” en un set / dict? ¿No debería establecer / dict solo permitir objetos inmutables para que puedan identificar el […]

Defina un diccionario de Python con claves inmutables pero valores mutables.

Bueno, la pregunta está en el título: ¿cómo defino un diccionario de python con claves inmutables pero valores mutables? Se me ocurrió esto (en python 2.x): class FixedDict(dict): “”” A dictionary with a fixed set of keys “”” def __init__(self, dictionary): dict.__init__(self) for key in dictionary.keys(): dict.__setitem__(self, key, dictionary[key]) def __setitem__(self, key, item): if key […]

Formas de hacer una clase inmutable en Python.

Estoy haciendo un poco de computación distribuida en la que varias máquinas se comunican bajo el supuesto de que todas tienen versiones idénticas de varias clases. Por lo tanto, parece ser un buen diseño para hacer estas clases inmutables; no en el sentido de que debe frustrar a un usuario con malas intenciones, solo lo […]

Compruebe la mutabilidad en Python?

Considere este código : a = {…} # a is an dict with arbitrary contents b = a.copy() ¿Qué papel juega la mutabilidad en las claves y valores de los dictados? ¿Cómo me aseguro de que los cambios en las claves o los valores de un dict no se reflejen en el otro? ¿Cómo se […]

¿Por qué deben ser inmutables las claves del diccionario?

¿Por qué es necesario que las claves del diccionario sean inmutables? Estoy buscando una razón simple y clara por la que las claves en los diccionarios de Python tengan esa restricción.