问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python 2.7 如何自定义一个CLASS风格的字典类型?

发布网友 发布时间:2022-03-03 18:03

我来回答

2个回答

热心网友 时间:2022-03-03 19:32

import operator

class NewDict( dict ):
default = None
def __init__( self ,init_dict ,default ):
self.default = default

for key ,value in init_dict.items( ):
if isinstance( value ,dict ):
init_dict[ key ] = self.__class__( value ,default )

return super( NewDict ,self ).__init__( init_dict )

def __missing__( self ,key ):
return self.default

def __getattr__( self ,key ):
return operator.getitem( self ,key )

def __setattr__( self ,key ,value ):
if key in dir( self ):
return super( NewDict ,self ).__setattr__( key ,value )
return operator.setitem( self ,key ,value )追问还有2个小问题,补充在提问区域的结尾了,幸苦大神再指点下哈:

热心网友 时间:2022-03-03 20:50

#!/usr/bin/python
# encoding: utf-8
#
# filename: dictObj.py
# author: Tim Wang
# date: Oct., 2013

class DictObj(dict):
    
    def __init__(self, **kwgs):
        self.__dict__ = dict(kwgs)
    
    def __getitem__(self, k):
        return self.__dict__.get(k, None)
        
    def __setitem__(self, k, value):
        self.__dict__[k] = value
    

def tester():
    d = DictObj(name='tim', email='tim_spac@163.com')
    print d['name'], d.email
    

if __name__ == "__main__":
    tester()

追问用我定义的那个字典来测试:
print cdic.ten
AttributeError: 'DictObj' object has no attribute 'ten'

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
308S标注使用0W-30的机油,如果用5w-40的有影响么 如果飞船在飞行时遇到一粒沙,飞船是否会直接报废?为什么呢?_百度... 火车或地铁行驶中的苍蝇或蚊子这些飞虫是怎么飞的 我一直很疑惑,在地铁公交上的飞虫蚊子之类的,它们不停在杆上,就这么... 固态硬盘的读取是不是都比写入要快啊?才买了个东芝的Q Pro,发现写入496... 我是非护理专业的专科生 但我想考护理资格证 该怎么办呢 我是非护理专业的专科生 但我想考护理资格证 该怎么办? 中专非护理专业单招可以考护理吗 苹果宣布的AppleWatchSeries6和AppleWatchSE有哪些新功能和价格? 描写榕树生命力顽强的诗句 国际护士节哪一年确立的? python中怎么定义一个布尔类型的变量? python里一个class可以定义多个构造函数吗 Python中定义一个类,class后面加冒号,有的加括号加冒号,又有的括号里加object,这 笔记本键盘打字错乱怎么恢复 笔记本电脑键盘打字错乱 微信里的表情有自己名字怎么修改 安卓微信怎样修改主题 为什么我电脑键盘不受控制自己乱打字 如何将不同的微信微信群群改成不同的昵称 键盘和软键盘打字都错乱 为什么打字时,电脑键盘字母键和数字键错乱?是怎么回事? 怎么修改,安卓系统,5.1版本的 微信改空白昵称怎么改 笔记本电脑键盘错乱了怎么调回来 怎样二次修改,安卓手机 安卓手机能修改吗?取了个很恶心的帐号,想改啊。知道的说下步骤,谢了。 笔记本电脑键盘打字一直错乱该怎么办? 安卓系统怎么更改啊!急!!! 台式电脑键盘输入错乱 每年的5月12日是国际护士节,这一天是 五孔墙壁插座如何连线?(不带开关) 这个明装一开五孔插座如何接线,见图? 带开关的五孔插座怎么连线 两开五孔插座如何接线? 带开关五孔插座怎么接线图解 美的空调怎么连接手机 我想在手机上面用美的空调使用手机控制怎么使用? 我想在手机上面用美的空调使用手机控制怎么使用 华为nova7下拉菜单不见了怎么设置? 华为nova7下拉菜单不见了怎么设置? 美的 空调如何用手机遥控呀 美的空调冷静星二代怎样用手机控制? 美的空调手机怎么控制 我家的美的空调要在手机上控制怎么设置 美的空调怎么远程遥控? 怎么用手机遥控美的空调 美的空调怎么用手机开启 使用vivo手机变卡顿怎么办 美的空调如何用美居APP实现智能控制?