Неизменяемые vs Изменяемые типы

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

171
задан Sнаđошƒаӽ 27 April 2016 в 13:55
поделиться