Мене бентежить те, що таке непорушний тип. Я знаю, що 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__
і це позначило відсутність помилок.