class Dict(dict): ''' Simple dict but support access as x.y style. >>> d1 = Dict() >>> d1['x'] = 100 >>> d1.x 100 >>> d1.y = 200 >>> d1['y'] 200 >>> d2 = Dict(a=1, b=2, c='3') >>> d2.c '3' >>> d2['empty'] Traceback (most recent call last): ... KeyError: 'empty' >>> d2.empty Traceback (most recent call last): ... AttributeError: 'Dict' object has no attribute 'empty' >>> d3 = Dict(('a', 'b', 'c'), (1, 2, 3)) >>> d3.a 1 >>> d3.b 2 >>> d3.c 3 ''' def __init__(self, names=(), values=(), **kw): super(Dict, self).__init__(**kw) for k, v in zip(names, values): self[k] = v def __getattr__(self, key): try: return self[key] except KeyError: raise AttributeError(r"'Dict' object has no attribute '%s'" % key) def __setattr__(self, key, value): self[key] = value
比如self[k] = v 这个self是指对象本身吗? 如果不是那它是个字典吗?它是从哪里创建这个字典的?
SELF 是指的是调用它的对象 ,dict这个是可以把类里面的属性全部当成一个大字典,getattr 这个函数可以这样理解getattr(object,option):return object.option,可以理解为返回调用他对象的属性 .
感谢c兄指点
Sign in to make a reply
骑独轮的小丑
比如self[k] = v 这个self是指对象本身吗? 如果不是那它是个字典吗?它是从哪里创建这个字典的?