I'm confused on what an immutable type is. I know the float object is considered to be immutable, with this type of example from my book: class RoundFloat(float): def __new__(cls, val): return float.__new__(cls, round(val, 2)) Is this considered to be immutable because of the class structure / hierarchy?, meaning float is at the top of the class and is its own method call. Similar to this type of example (even though my book says dict is mutable): class SortedKeyDict(dict): def __new__(cls, val): return dict.__new__(cls, val.clear()) Whereas something mutable has methods inside the class, with this type of example: class SortedKeyDict_a(dict): def example(self): return self.keys() Also, for the last class(SortedKeyDict_a), if I pass this type of set to it: d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2)) without calling the example method, it returns a dictionary. The SortedKeyDict with __new__ flags it as an error. I tried passing integers to the RoundFloat class with __new__ and it flagged no errors. Continue reading...