前几天遇到的一个比较难的面试题,考察队python 字典的深入理解还有重写,题和答案如下
请写一个类继承dict类,支持.方式访问
mydict = Mydict() mydict.a = 1 mydict.b = 2 mydict.c.d = 3 print mydict print mydict.c 输出: {'a': 1, 'c': {'d': 3}, 'b': 2} {'d': 3}
答案如下:
class Mydict(dict):
def __setattr__(self, key, value):
self[key] = value
super().__setattr__(key, value)
def __getattr__(self, item):
self[item] = self.__class__()
self.__setattr__(item, Mydict())
return super().__getitem__(item)
if __name__ == '__main__':
mydict = Mydict()
mydict.a = 1
mydict.b = 2
mydict.c.d = 3
print(mydict)
print(mydict.c)
|