Je suis confus sur ce qu'est un immuable type est. Je sais que l' float
objet est considéré comme immuable, avec ce type d'exemple de mon livre:
class RoundFloat(float):
def __new__(cls, val):
return float.__new__(cls, round(val, 2))
Est-il considéré comme immuable, en raison de la structure de classe / de la hiérarchie?, sens float
est au top de la classe et qui est son propre appel de méthode. Similaire à ce type d'exemple (même si mon livre, dit - dict
est sujette au changement):
class SortedKeyDict(dict):
def __new__(cls, val):
return dict.__new__(cls, val.clear())
Alors que quelque chose mutable a des méthodes à l'intérieur de la classe, avec ce type d'exemple:
class SortedKeyDict_a(dict):
def example(self):
return self.keys()
Aussi, pour la dernière class(SortedKeyDict_a)
, si je passe ce type de set:
d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2))
sans appel de la example
méthode, il retourne un dictionnaire. L' SortedKeyDict
avec __new__
drapeaux comme une erreur. J'ai essayé en passant entiers à l' RoundFloat
classe avec __new__
et qu'elle avait pas d'erreurs. Quelqu'un peut-il svp m'éclairer sur le pourquoi il fonctionne de la manière qu'il le fait.
S'il vous plaît aider avec ma compréhension de immuable types vs non.