A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

前几天遇到的一个比较难的面试题,考察队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)

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马