mirror of
https://github.com/PaiGramTeam/MibooGram.git
synced 2024-11-16 12:51:45 +00:00
40 lines
950 B
Python
40 lines
950 B
Python
|
# Storage is from web.py utils
|
||
|
# https://github.com/webpy/webpy/blob/d69a49eb3c593be21fa4a5275ca9f028245678fd/web/utils.py#L81
|
||
|
|
||
|
class Storage(dict):
|
||
|
"""
|
||
|
A Storage object is like a dictionary except `obj.foo` can be used
|
||
|
in addition to `obj['foo']`.
|
||
|
>>> o = storage(a=1)
|
||
|
>>> o.a
|
||
|
1
|
||
|
>>> o['a']
|
||
|
1
|
||
|
>>> o.a = 2
|
||
|
>>> o['a']
|
||
|
2
|
||
|
>>> del o.a
|
||
|
>>> o.a
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
AttributeError: 'a'
|
||
|
"""
|
||
|
|
||
|
def __getattr__(self, key):
|
||
|
try:
|
||
|
return self[key]
|
||
|
except KeyError as k:
|
||
|
raise AttributeError(k)
|
||
|
|
||
|
def __setattr__(self, key, value):
|
||
|
self[key] = value
|
||
|
|
||
|
def __delattr__(self, key):
|
||
|
try:
|
||
|
del self[key]
|
||
|
except KeyError as k:
|
||
|
raise AttributeError(k)
|
||
|
|
||
|
def __repr__(self):
|
||
|
return "<Storage " + dict.__repr__(self) + ">"
|