attrdict.py (7459:da32c2b05648) | attrdict.py (12563:8d59ed22ae79) |
---|---|
1# Copyright (c) 2006 The Regents of The University of Michigan 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions are 6# met: redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer; 8# redistributions in binary form must reproduce the above copyright --- 12 unchanged lines hidden (view full) --- 21# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26# 27# Authors: Nathan Binkert 28 | 1# Copyright (c) 2006 The Regents of The University of Michigan 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions are 6# met: redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer; 8# redistributions in binary form must reproduce the above copyright --- 12 unchanged lines hidden (view full) --- 21# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26# 27# Authors: Nathan Binkert 28 |
29from __future__ import print_function 30 |
|
29__all__ = [ 'attrdict', 'multiattrdict', 'optiondict' ] 30 31class attrdict(dict): 32 """Wrap dict, so you can use attribute access to get/set elements""" 33 def __getattr__(self, attr): 34 if attr in self: 35 return self.__getitem__(attr) 36 return super(attrdict, self).__getattribute__(attr) --- 35 unchanged lines hidden (view full) --- 72 return super(optiondict, self).__getattr__(attr) 73 except AttributeError: 74 return None 75 76if __name__ == '__main__': 77 x = attrdict() 78 x.y = 1 79 x['z'] = 2 | 31__all__ = [ 'attrdict', 'multiattrdict', 'optiondict' ] 32 33class attrdict(dict): 34 """Wrap dict, so you can use attribute access to get/set elements""" 35 def __getattr__(self, attr): 36 if attr in self: 37 return self.__getitem__(attr) 38 return super(attrdict, self).__getattribute__(attr) --- 35 unchanged lines hidden (view full) --- 74 return super(optiondict, self).__getattr__(attr) 75 except AttributeError: 76 return None 77 78if __name__ == '__main__': 79 x = attrdict() 80 x.y = 1 81 x['z'] = 2 |
80 print x['y'], x.y 81 print x['z'], x.z 82 print dir(x) 83 print x | 82 print(x['y'], x.y) 83 print(x['z'], x.z) 84 print(dir(x)) 85 print(x) |
84 | 86 |
85 print | 87 print() |
86 87 del x['y'] 88 del x.z | 88 89 del x['y'] 90 del x.z |
89 print dir(x) | 91 print(dir(x)) |
90 print(x) 91 | 92 print(x) 93 |
92 print 93 print "multiattrdict" | 94 print() 95 print("multiattrdict") |
94 x = multiattrdict() 95 x.x.x.x = 9 96 x.y.z = 9 | 96 x = multiattrdict() 97 x.x.x.x = 9 98 x.y.z = 9 |
97 print x 98 print x.y 99 print x.y.z 100 print x.z.z | 99 print(x) 100 print(x.y) 101 print(x.y.z) 102 print(x.z.z) |