Estoy confundido sobre lo que es un tipo inmutable. Sé que el floatobjeto se considera inmutable, con este tipo de ejemplo de mi libro:
class RoundFloat(float):
def __new__(cls, val):
return float.__new__(cls, round(val, 2))
¿Se considera que esto es inmutable debido a la estructura / jerarquía de la clase ?, el significado floatestá en la parte superior de la clase y es su propia llamada al método. Similar a este tipo de ejemplo (aunque mi libro dice que dictes mutable):
class SortedKeyDict(dict):
def __new__(cls, val):
return dict.__new__(cls, val.clear())
Mientras que algo mutable tiene métodos dentro de la clase, con este tipo de ejemplo:
class SortedKeyDict_a(dict):
def example(self):
return self.keys()
Además, para el último class(SortedKeyDict_a), si le paso este tipo de conjunto:
d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2))
sin llamar al examplemétodo, devuelve un diccionario. El SortedKeyDictcon lo __new__marca como un error. Intenté pasar enteros a la RoundFloatclase con __new__y no marcó ningún error.
