# _*_ coding: utf-8 _*_ """ python_magic_methods.py by xianhu """ # å®ä¹ä¸ä¸ªè½å¤èªå¨æ¯è¾å¤§å°çPeopleç±» class People(object): def __init__(self, name, age): self.name = name self.age = age return def __str__(self): return self.name + ":" + str(self.age) def __lt__(self, other): return self.name < other.name if self.name != other.name else self.age < other.age print("\t".join([str(item) for item in sorted([People("abc", 18), People("abe", 19), People("abe", 12), People("abc", 17)])])) # Pythonå®ç°ä»»ææ·±åº¦çèµå¼ ä¾å¦a[0] = 'value1'; a[1][2] = 'value2'; a[3][4][5] = 'value3' class MyDict(dict): def __setitem__(self, key, value): # è¯¥å½æ°ä¸å任使¹å¨ è¿éåªæ¯ä¸ºäºè¾åº print("setitem:", key, value, self) super().__setitem__(key, value) return def __getitem__(self, item): # ä¸»è¦æå·§å¨è¯¥å½æ° print("getitem:", item, self) # åºæ¬æè·¯: a[1][2]èµå¼æ¶ éè¦å ååºa[1] ç¶åç»a[1]ç[2]èµå¼ if item not in self: # 妿a[1]ä¸åå¨ temp = MyDict() # åéè¦æ°å»ºä¸ä¸ªdict super().__setitem__(item, temp) # 并使å¾a[1] = dict return temp # è¿åa[1] 使å¾a[1][2] = valueææ return super().__getitem__(item) # 妿a[1]åå¨ åç´æ¥è¿åa[1] # 使ç¨ä¾å: test = MyDict() test[0] = 'test' test[1][2] = 'test1' test[3][4][5] = 'test2' print("==========================")