python 中__getattr__ 以及 __setattr__
2016-05-16 00:17
489 查看
python 中__getattr__ 以及 __setattr__
下面是mydict.py:
结果为:
运行单元测试:
参考文档:http://www.liaoxuefeng.com/
下面是mydict.py:
#!/usr/bin/env python class Dict(dict): def __init__(self, **kw): super(Dict, self).__init__(**kw) 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 d = Dict(a=1, b=2) print d['a'] # use __getattr__ function print d.a print d.b # use __setattr__ function d.b = 3 print d.b #print d.c class Test(): def __getattr__(self, a): return a t = Test() print t.ni
结果为:
1 1 2 3 ni
运行单元测试:
import unittest from mydict import Dict class TestDict(unittest.TestCase): def setUp(self): print('setUp...') def tearDown(self): print('tearDown...') def test_init(self): d = Dict(a=1, b='test') self.assertEqual(d.a, 1) self.assertEqual(d.b, 'test') self.assertTrue(isinstance(d, dict)) def test_key(self): d = Dict() d['key'] = 'value' self.assertEqual(d.key, 'value') def test_attr(self): d = Dict() d.key = 'value' self.assertTrue('key' in d) self.assertEqual(d['key'], 'value') def test_keyerror(self): d = Dict() with self.assertRaises(KeyError): value = d['empty'] def test_attrerror(self): d = Dict() with self.assertRaises(AttributeError): value = d.empty if __name__ == '__main__': unittest.main()
参考文档:http://www.liaoxuefeng.com/
相关文章推荐
- python正则表达式(个人笔记)
- python基础练习(六)—— 绘图与可视化
- 浅谈Python 中整型对象的存储问题
- python字符类型的一些方法小结
- 浅析Python 中整型对象存储的位置
- python字典的常用操作方法小结
- python操作字典类型的常用方法(推荐)
- Python使用lxml模块和Requests模块抓取HTML页面的教程
- Python3 爬虫(一)-----爬取网页源代码
- python 常用
- Python使用xslt提取网页数据
- PySide——Python图形化界面入门教程(一)
- Python 冒泡排序
- 灰帽子Python 学习记录 5
- Python如何使用正则表达式匹配中文
- 部分排序算法python实现
- 灰帽子Python 学习记录 4
- python中filter, map, reduce, lambda
- Python中unittest用法实例
- python04-判断与循环语句