Я смущен тем, что такое неизменный тип. Я знаю, что объект 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())
В то время как что-то mutable имеет методы внутри класса, с этим типом примера:
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__
и не указал ошибок.