Sono confuso su cosa sia un tipo immutabile. So che l' float
oggetto è considerato immutabile, con questo tipo di esempio dal mio libro:
class RoundFloat(float):
def __new__(cls, val):
return float.__new__(cls, round(val, 2))
È considerato immutabile a causa della struttura / gerarchia della classe? Il significato float
è in cima alla classe ed è la sua chiamata al metodo. Simile a questo tipo di esempio (anche se il mio libro dice che dict
è mutabile):
class SortedKeyDict(dict):
def __new__(cls, val):
return dict.__new__(cls, val.clear())
Considerando che qualcosa di mutabile ha metodi all'interno della classe, con questo tipo di esempio:
class SortedKeyDict_a(dict):
def example(self):
return self.keys()
Inoltre, per ultimo class(SortedKeyDict_a)
, se gli passo questo tipo di set:
d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2))
senza chiamare il example
metodo, restituisce un dizionario. Il SortedKeyDict
con lo __new__
contrassegna come un errore. Ho provato a passare numeri interi alla RoundFloat
classe con __new__
e non ha segnalato errori.