Saya bingung tentang tipe yang tidak bisa diubah. Saya tahu float
objek 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 float
ada di bagian atas kelas dan merupakan pemanggilan metodenya sendiri. Mirip dengan jenis contoh ini (meskipun buku saya mengatakan dict
bisa 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 example
metode, itu mengembalikan kamus. The SortedKeyDict
dengan __new__
bendera itu sebagai kesalahan. Saya mencoba meneruskan bilangan bulat ke RoundFloat
kelas __new__
dan ditandai tidak ada kesalahan.