在python中访问字典中的元素都是通过下标,但是通过某些方式,我们可以像访问成员变量那样访问字典:
a = {
'foo': 1,
'bar': 2
}
print afoo
print abar
setattr和__getattr__的使用
看如下的代码:
# coding: utf-8
class Test(object):
def __init__(self):
selfa = 1
selfb = 2
# 设置属性都会调用
def __setattr__(self, key, value):
print '__setattr__: %s' % key
self__dict__[key] = value
# __getattr__ 只有在访问不存在的成员时才会被调用
def __getattr__(self, key):
print '__getattr__: %s' % key
return self__dict__[key]
if __name__ == '__main__':
t = Test()
print ta
print tb
tc = 12
print tc
tc = 13
ta = 123
print td
setattr是每次设置属性时都会调用,而__getattr 则只有当访问不存在的元素时才会调用。
对象的属性均保存在
dict 这个字典中。默认的
setattr 和
getattr__也是访问这个字典。
通过一个Storage类的包装访问字典
#!/usr/bin/env python
# coding: utf8
import json
class Storage(dict):
def __init__(self, args, kw):
dict__init__(self, args, kw)
def __getattr__(self, key):
return self[key]
def __setattr__(self, key, value):
self[key] = value
def __delattr__(self, key):
del self[key]
if __name__ == '__main__':
l = {'foo': 'bar'}
s = Storage(l)
print sfoo
print s['foo']
我们可以看到,经过Storage类的包装,此时不仅可以通过下标s['foo'],还可以使用sfoo来调用foo对应的元素。
原理很简单,我们改变了Storage默认的__getattr 和
setattr 实现,默认实现是访问内部的
dict__,而该邂逅访问的是基类dict,所以访问sfoo时,访问的是内部的dict['foo'],所以能访问到元素。
json库loads中的object_hook参数的使用
看如下的代码,常规的json序列化和反序列化是这样做:
import json
from decimal import
obj = {'name': 'haha', 'age': 23, 'height': 175}
json_string = jsondumps(obj)
print json_string
new_obj = jsonloads(json_string)
print new_obj
我们从上面看到,dict经过包装,可以改造成Storage,使用访问属性的方式访问元素。json的loads功能也提供了类似的功能。
# coding: utf-8
import json
obj = {'name': 'haha', 'age': 23, 'height': 175}
json_string = jsondumps(obj)
from collections import namedtuple
Student = namedtuple('Student',['name', 'age', 'height'])
def object_hook_handler(dict_obj):
return Student(name=dict_obj['name'],
age=dict_obj['age'],
height=dict_obj['height'])
new_obj = jsonloads(json_string, object_hook=object_hook_handler)
print new_obj
打印结果为:
Student(name=u'haha', age=23, height=175)
可以看到,通过object_hook这个参数传入一个函数,将dict改造成一个有名元组。
其实,在python中,类也可以看做一个函数,所以直接传入类名做参数即可。
from collections import OrderedDict
new_obj = jsonloads(json_string, object_hook=OrderedDict)
print new_obj
输出结果为:
OrderedDict([(u'age', 23), (u'name', u'haha'), (u'height', 175)])
隐藏Storage
为了使用方便,最好不让用户接触到Storage,所以可以这样写:
#!/usr/bin/env python
# coding: utf8
import json
class Storage(dict):
def __init__(self, args, kw):
dict__init__(self, args, kw)
def __getattr__(self, key):
return self[key]
def __setattr__(self, key, value):
self[key] = value
def __delattr__(self, key):
del self[key]
def storage_object_hook(dct):
return Storage(dct)
def json_decode(data, args, kw):
return jsonloads(data, object_hook=storage_object_hook, args, kw)
def json_encode(data, args, kw):
return jsondumps(data, args, kw)
if __name__ == '__main__':
l = {'foo': 'bar'}
l = json_decode(json_encode(l))
print l
print lfoo
许多汉字在五行中都有它对应的属性,那么在康熙字典里二十笔画属水的字有哪些呢?下面我为你整理了康熙字典二十画属水的字,希望对你有所帮助!
20笔画五行属水的字
譬 罴 咸 沥 潇 蠛 黼 迈 怀 鬕 嚷 颟 潴
还 馒 避 襣 躄 泸 濒 辫 缤 邂 泷 鲾 瀛
穮 鳆 瀚 鹛 蚝 鳊 露 瀣 瀜 瀞 膀 龅 濑
蠙 膑 魔 鹕 瀖
康熙字典二十画属水的字——躄躄读音:[bì]
基本解释
跛脚:“民家有~者,槃散行汲。”
〔~~〕行进不止的样子,如“奇俊无少年,日车何~~!”
仆倒:“迷闷~地。”
详细解释
〈形〉
蛉惩炔荒苄凶[lame]
瘖聋跛躄。——《礼记·王制》
犹将伸伛起躄。——枚乘《七发》
民家有躄者。——《史记·平原君虞卿传》。正义:“跛也。”
躄者见虎而不走。——《淮南子·说林》
躄者告盲者。——《淮南子·说山训》
胝身躄步。——柳宗元《天对》
瘖聋跛躃。——《礼记·王制》
又如:躄足(跛足;瘸腿);躄步(跛行)
常用词组
躄疾 bì jí
[lame in both legs] 瘸脚病
兄弟三人,皆得躄疾。--明 罗贯中《全图绣像三国演义》
部首笔画
部首: 足
部外笔画: 13
总笔画: 20
五笔86: nkuh
五笔98: nkuh
仓颉: sjryo
笔顺编号: 51325141431122512134
四角号码: 70801
郑码: xmsj
Unicode: CJK 统一汉字 U+8E84
康熙字典二十画属水的字——邂邂读音:[xiè]
基本解释
〔~逅〕a不期而会,如“~~相逢”;b一旦,偶然,如“~~发露,祸及知亲”。
详细解释
(形声。从辵( chuò),解声)
常用词组
邂逅 xiè hòu
[meet(a relative,friend,etc)unexpectedly;meet by chance;run into sb]不期而遇
今夕何夕,见此邂逅。--《诗唐风绸缪》
邂逅相遇 xiè hòu xiāng yù
邂逅:未约而相逢。指无意中相遇。
部首笔画
部首: 辶
部外笔画: 13
总笔画: 16
五笔86: qevp
五笔98: qevp
仓颉: ynbq
笔顺编号: 3535112533112454
四角号码: 37305
郑码: rlmw
Unicode: CJK 统一汉字 U+9082
字形结构
汉字首尾分解: 辶解
汉字部件分解: 角刀牛辶
笔顺编号: 3535112533112454
笔顺读写: 撇折撇折横横竖折撇撇横横竖捺折捺
一、暧昧的意思
释义:指的是男女之间态度含糊、不明朗的关系。是一种很特别的男女朋友关系,存在于友情之间,又超然于友情之上。
引证:沈从文《绅士的太太》:“这婶婶是年青女人,对于这暧昧情形有所窘迫,也感到无话可说了。”
二、邂逅的意思
释义:不期而遇、偶然。
引证:夏衍《长途》:“这广坦的荒原,使我想起了我们从广州退出时在柳江船上邂逅的一个旅伴。”
扩展资料
邂逅的近义词:
一、相遇
释义:遭遇;相逢。
引证:鲁迅《书信集·致姚克》:“如果竟不相遇,我当直接寄到那边去。”
二、相逢
释义:彼此遇见、会见或碰见。
引证:鲁迅《题三义塔》:“度尽劫波兄弟在,相逢一笑泯恩仇。”
艳遇和邂逅主要有以下区别:
艳遇:
定义:艳遇中的"艳"意味着美丽,遇到的"遇"则指遇到。所以,艳遇可以理解为遇到美丽,如流动的水、开放的花、成长的果、沿途的风景等,这些都是美丽的。
感情色彩:相对于邂逅,艳遇的感情色彩更为浓墨重彩,描述的是一种美好的经历。
邂逅:
定义:邂逅指不期而遇或者偶然相遇,来源于《诗经·国风》。它也可以表示一种欢快的神态。
含义:邂逅通常是指两个完全不认识的人第一次见面,而遇见则可以是故友的相逢,也可以是两个陌生人的见面。
总结来说,艳遇更多是关于两个有互动的行为,通常形容一段美好的经历,而邂逅则更偏重于两个完全不认识的人的偶然相遇。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)