Saya bingung tentang tipe yang tidak bisa diubah. Saya tahu floatobjek tersebut dianggap tidak dapat diubah, dengan jenis contoh ini dari buku saya:
class RoundFloat(float):
def __new__(cls, val):
return float.__new__(cls, round(val, 2))
Apakah ini dianggap tidak dapat diubah karena struktur kelas / hierarki ?, makna floatada di bagian atas kelas dan merupakan pemanggilan metodenya sendiri. Mirip dengan jenis contoh ini (meskipun buku saya mengatakan dictbisa berubah):
class SortedKeyDict(dict):
def __new__(cls, val):
return dict.__new__(cls, val.clear())
Sedangkan sesuatu yang bisa berubah memiliki metode di dalam kelas, dengan jenis contoh ini:
class SortedKeyDict_a(dict):
def example(self):
return self.keys()
Juga, untuk yang terakhir class(SortedKeyDict_a), jika saya meneruskan jenis set ini ke sana:
d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2))
tanpa memanggil examplemetode, itu mengembalikan kamus. The SortedKeyDictdengan __new__bendera itu sebagai kesalahan. Saya mencoba meneruskan bilangan bulat ke RoundFloatkelas __new__dan ditandai tidak ada kesalahan.
