Jestem zdezorientowany, czym jest niezmienny typ. Wiem, że float
obiekt jest uważany za niezmienny, z tego rodzaju przykładem z mojej książki:
class RoundFloat(float):
def __new__(cls, val):
return float.__new__(cls, round(val, 2))
Czy jest to uważane za niezmienne ze względu na strukturę / hierarchię klas ?, co float
oznacza, że znajduje się na szczycie klasy i jest własnym wywołaniem metody. Podobny do tego typu przykładu (chociaż moja książka mówi, że dict
można go modyfikować):
class SortedKeyDict(dict):
def __new__(cls, val):
return dict.__new__(cls, val.clear())
Podczas gdy coś zmiennego ma metody wewnątrz klasy, z tego rodzaju przykładem:
class SortedKeyDict_a(dict):
def example(self):
return self.keys()
Poza tym class(SortedKeyDict_a)
, jeśli przekażę mu ten typ zestawu:
d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2))
bez wywoływania example
metody zwraca słownik. SortedKeyDict
Z __new__
flagami jako błąd. Próbowałem przekazać liczby całkowite do RoundFloat
klasy __new__
i nie oznaczało to żadnych błędów.