ประเภทไม่เปลี่ยนรูป vs ไม่แน่นอน
ฉันสับสนในสิ่งที่ไม่เปลี่ยนรูปแบบ ฉันรู้ว่า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__และมันก็ไม่มีข้อผิดพลาด