Je ne sais pas ce qu'est un type immuable. 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-ce considéré comme immuable en raison de la structure / hiérarchie des classes?, La signification float
est au sommet de la classe et est son propre appel de méthode. Similaire à ce type d'exemple (même si mon livre dit qu'il dict
est modifiable):
class SortedKeyDict(dict):
def __new__(cls, val):
return dict.__new__(cls, val.clear())
Alors que quelque chose de 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 le dernier class(SortedKeyDict_a)
, si je lui passe ce type d'ensemble:
d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2))
sans appeler la example
méthode, il renvoie un dictionnaire. Le SortedKeyDict
avec le __new__
signale comme une erreur. J'ai essayé de passer des nombres entiers à la RoundFloat
classe avec __new__
et cela n'a signalé aucune erreur.