【原创】python 实体类 dict to object(2)
(2015-07-16 21:22:53)
标签:
pythondict-to-objectobject |
分类: python |
之前写过一篇:《Python 封装-实现 C#实体类》
1 # -*-
coding:utf-8 -*-
2
3 # @version: 1.0
4 # @author: ZhangZhipeng
5 # @date: 2015-07-13
6
7 from collections import namedtuple
8
9
10 classEntity(object):
11
12 """docstring
for Entity"""
13
14 def __init__(self,
class_name, columns, **kwargs):
15 super(Entity,
self).__init__()
16 _columns
= [i.strip() for i
in columns.split(" ") if i.strip()]
17 _columns.extend(kwargs.keys())
18 columns
= list(set(_columns))
19 entity
= namedtuple(class_name, columns)
20 self._entity
= entity(**kwargs)
21
22 def __getattribute__(self,
key):
23 entity
= super(Entity, self).__getattribute__("_entity")
24 try:
25 return super(Entity,
self).__getattribute__(key)
26 except:
27 return getattr(entity,
key)
28
29 def __setattr__(self,
key, value):
30 if key
== "_entity":
31 super(Entity,
self).__setattr__("_entity",
value)
32 return
33 entity
= super(Entity, self).__getattribute__("_entity")
34 try:
35 #
setattr(entity, key, value)
36 entity.__setattr__(key,
value)
37 except:
38 super(Entity,
self).__setattr__(key, value)
39
40
41 if__name__ == '__main__':
42 user
= {"name": "zhipeng", "age":
20}
43 entity
= Entity("user", "", **user)
44 print entity
45 #
print dir(entity)
46 print entity.name,
entity.age
47 #
print entity.score
48
49
过程比较复杂,代码一堆一堆的的
今天呢,再补发一个实测可用哦~
10 class
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 if
42
43
44
45
46
47
48
49