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.