Articles of inmutabilidad

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.

Mutabilidad del ** argumento de Kwargs en Python

Considere un caso en el que cambio los kwargs los kwargs dentro de un método: def print_arg(**kwargs): print kwargs.pop(‘key’) Si llamo al método pop_arg con un diccionario como este: mydict = {‘key’:’value’} print_arg(**mydict) ¿ mydict será cambiada por esta llamada? También estoy interesado en una explicación más detallada del mecanismo de llamada al método subyacente […]

Comportamiento inesperado de extensión con una lista en Python

Estoy tratando de entender cómo funciona la extensión en Python y no está haciendo lo que esperaba. Por ejemplo: >>> a = [1, 2, 3] >>> b = [4, 5, 6].extend(a) >>> b >>> Pero habría esperado: [4, 5, 6, 1, 2, 3] ¿Por qué está devolviendo un Ninguno en lugar de extender la lista?

¿Por qué los enteros son inmutables en Python?

Entiendo las diferencias entre objetos mutables e inmutables en Python. He leído muchas publicaciones discutiendo las diferencias. Sin embargo, no he leído nada sobre POR QUÉ los enteros son objetos inmutables. ¿Existe una razón para esto? ¿O es la respuesta “así es como es”? Edit: Me están pidiendo que “diferencie” esta pregunta de otras preguntas, […]

Matriz numpy inmutable?

¿Hay una forma sencilla de crear una matriz NumPy inmutable? Si uno tiene que derivar una clase de ndarray para hacer esto, ¿cuál es el conjunto mínimo de métodos que debe anular para lograr la inmutabilidad?

Python, subclasificando tipos inmutables.

Tengo la siguiente clase: class MySet(set): def __init__(self, arg=None): if isinstance(arg, basestring): arg = arg.split() set.__init__(self, arg) Esto funciona como se esperaba (inicializando el conjunto con las palabras de la cadena en lugar de las letras). Sin embargo, cuando quiero hacer lo mismo con la versión inmutable de set, el método __init__ parece ser ignorado: […]

¿Cómo / por qué funciona set () en {frozenset ()}?

A pesar de que los conjuntos son inestables, la verificación de membresía en otros trabajos de conjuntos: >>> set() in {frozenset()} True Esperaba TypeError: unhashable type: ‘set’ , consistente con otros comportamientos en Python: >>> set() in {} # doesn’t work when checking in dict TypeError: unhashable type: ‘set’ >>> {} in {frozenset()} # looking […]