¿Por qué FrozenList es diferente de la tupla?

from pandas.core.base import FrozenList Type: type String form:  File: /site-packages/pandas/core/base.py Docstring: Container that doesn't allow setting item *but* because it's technically non-hashable, will be used for lookups, appropriately, etc. 

¿Por qué no usar simplemente la tupla ? ¿Qué funcionalidad adicional ofrecería un FrozenList?

Este es un constructo interno de pandas. No usar la tupla porque:

  • Hereda de una clase común de pandas.
  • Es personalizable (por ejemplo, la reproducción)
  • No tiene todas las funciones de una tupla (algunas están deshabilitadas)
  • No es hashable (así que más como una lista aquí y no una tupla)

La construcción se utiliza para representar un MultiIndex niveles, tags y nombres. El objective es evitar la modificación de estos atributos y forzar el uso de métodos (por ejemplo, set_levels() ). Como el estado de estos no se puede cambiar de forma independiente (para nivel / tags), se deben cambiar juntos.

Sin embargo, estas son propiedades ‘públicas’, por lo que necesitaban un mecanismo de acceso que pudiera hacer todo esto (y aún así, ser modificado internamente si es necesario, por razones de rendimiento).