Değişmez bir türün ne olduğu konusunda kafam karıştı. float
Kitabı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 float
sı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 dict
sö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))
example
yöntemi çağırmadan bir sözlük döndürür. SortedKeyDict
İle __new__
hata olarak bayraklar onu. RoundFloat
Sınıfa tamsayı geçmeyi denedim __new__
ve hiçbir hata işaretledi.