Python使用点操作符读写字典

利用类的__dict__属性重新封装字典,注意这里__dict__只能读取字典的第一层的键,多层嵌套字典需要使用递归进行构建,如toDotDict函数

class DotDict(dict):
    def __init__(self, *args, **kwargs):
        dict.__init__(self, *args, **kwargs)
        self.__dict__ = self

    def toDotDict(data):
        if isinstance(data, dict):
            for k, v in data.items():
                if isinstance(v, dict):
                    data[k] = DotDict(v)
                    DotDict.toDotDict(data[k])
        else:
            return data

        return DotDict(data)

测试类,类中包含一个待操作的字典

class Test:
	Info = { "a": { "c" : 0}}
	def __init__(self):
		self.__dict__ = DotDict.toDotDict(self.Info)

使用语句,支持键以及点操作符读写字典相应键的对应值

if __name__ == "__main__":
    test = Test()
    print(test.a.c)
    print(test.__dict__["a"]["c"])
    test.a.c = "ccc"
    print(test.a.c)
    print(test.__dict__["a"]["c"])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZTao-z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值