1 class MyDict(dict): #有序字典实现 2 3 def __init__(self): 4 self.li = [] 5 super(MyDict,self).__init__() 6 7 def __setitem__(self, key,value): 8 self.li.append(key) 9 super(MyDict,self).__setitem__(key,value) 10 11 def __str__(self): 12 temp_list = [] 13 for key in self.li: 14 value = self.get(key) 15 temp_list.append("'%s':%s" %(key,value,)) 16 temp_str = '{' + ','.join(temp_list) + '}' 17 return temp_str 18 obj = MyDict() 19 obj['k1'] = 123 20 obj['k2'] = 456 21 print(obj)
程序整体思路是将字典与列表结合,利用列表的有序性,保存字典的KEY值,在print()输出字典的时候,调用__str__(self)方法,因此在MyDict类中操作__str__()方法,将之前保存在列表中的字典key取出,进行格式化输出,将最终结果作为返回值,实现最终结果。从这个例子中可以看出,搞清楚对象在不同操作中调用的各种内置特殊方法很重要。比如在生成对象的时候自动调用__init__()方法,在给字典对象赋值的时候调用__setitem__(self,key,value),在输出对象的时候调用__str__()方法。