Неизменяемые и изменчивые типы
Я запутался в том, что такое неизменный тип. Я знаюfloat
объект считается неизменным, на примере такого типа из моей книги:
class RoundFloat(float):
def __new__(cls, val):
return float.__new__(cls, round(val, 2))
Считается ли это неизменным из-за структуры / иерархии классов?float
находится на вершине класса и является собственным вызовом метода. Подобно этому типу примера (хотя моя книга говоритdict
изменчиво):
class SortedKeyDict(dict):
def __new__(cls, val):
return dict.__new__(cls, val.clear())
В то время как что-то непостоянное имеет методы внутри класса, в следующем примере:
class SortedKeyDict_a(dict):
def example(self):
return self.keys()
Кроме того, для последнегоclass(SortedKeyDict_a)
, если я передам этот тип набора к нему:
d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2))
без вызоваexample
метод, он возвращает словарь.SortedKeyDict
с участием__new__
помечает это как ошибку. Я пытался передать целые числа вRoundFloat
класс с__new__
и это не помечено без ошибок.