python::简单数据对象到Object自动转换

python::简单数据对象到Object自动转换

python内部数据容器有dict和list两种 ,工作中最常用的方式是定义一些数据结构(数据即代码),例如: 

1 frog={ ' name ': ' scott ',
2            ' age ':2,
3            ' parts ':{
4                      ' eye ': ' green ', ' leg ':85
5                     },
6            ''friend " :['moee','wee'],
7             " hometown ": ' affica '
8          }

frog对象定义了小动物的某些属性,访问frog对象属性时,通过 dict,list的取值方法进行访问,例如:  
print frog['name']
print frog['friend'][0]  
有时觉得这种表达方式太原始了,需要改进,最好是以 '.'方式访问对象属性,例如:  
print frog.name
代码来开始和结束吧, class _x 
 1  class _x:
 2      """
 3      从简单数据类型转换成python对象
 4 
 5      p = _x({'name':'boob','body':{'color':'black'},'toys':[1,2,3,],'age':100})
 6      print p['toys'][1]
 7      print len(p.toys)
 8      print p.body.colors
 9       """
10      def  __init__(self,primitive):
11         self.data = primitive
12 
13      def  __getattr__(self, item):
14         value = self.data.get(item,None)
15          if type(value) == dict:
16             value = _x(value)
17          return value
18 
19      def  __len__(self):
20          return len(self.data)
21 
22      def  __str__(self):
23          return str(self.data)
24 
25      def  __getitem__(self, item):
26         value = None
27          if type(self.data)  in (list,tuple):
28             value = self.data[item]
29              if type(value)  in (dict,list,tuple):
30                 value = _x(value)
31          elif type(self.data) == dict:
32             value = self. __getattr__(item)
33          return value







你可能感兴趣的:(python::简单数据对象到Object自动转换)