Değişmez bir türün ne olduğu konusunda kafam karıştı. floatKitabımdaki bu tür bir örnekle nesnenin değişmez olarak kabul edildiğini biliyorum :
class RoundFloat(float):
def __new__(cls, val):
return float.__new__(cls, round(val, 2))
Sınıf yapısı / hiyerarşisi nedeniyle bunun değişmez olduğu düşünülüyor mu? Anlam floatsınıfın en üstünde ve kendi yöntem çağrısıdır. Bu tür bir örneğe benzer şekilde (kitabım dictsöylenebilir olsa bile ):
class SortedKeyDict(dict):
def __new__(cls, val):
return dict.__new__(cls, val.clear())
Değişken bir şeyin sınıf içinde, bu tür bir örnekle yöntemleri vardır:
class SortedKeyDict_a(dict):
def example(self):
return self.keys()
Ayrıca, son olarak class(SortedKeyDict_a), bu tür bir kümeyi ona aktarırsam:
d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2))
exampleyöntemi çağırmadan bir sözlük döndürür. SortedKeyDictİle __new__hata olarak bayraklar onu. RoundFloatSınıfa tamsayı geçmeyi denedim __new__ve hiçbir hata işaretledi.
