Я смущен тем, что такое неизменный тип. Я знаю, что объект 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__ и не указал ошибок.

