瀏覽代碼

Use KeyValue object for key-value data
(allows use of e.g. region.rows as an alternative to region['rows'])


git-svn-id: https://svn.osgeo.org/grass/grass/trunk@50972 15284696-431f-4ddb-bdfa-cd5b030d7da7

Glynn Clements 13 年之前
父節點
當前提交
d4dd853f66
共有 1 個文件被更改,包括 22 次插入1 次删除
  1. 22 1
      lib/python/core.py

+ 22 - 1
lib/python/core.py

@@ -486,6 +486,27 @@ def tempdir():
     
     return tmp
 
+class KeyValue(dict):
+    """A general-purpose key-value store.
+
+    KeyValue is a subclass of dict, but also allows entries to be read and
+    written using attribute syntax. Example:
+
+    \code
+    >>> region = grass.region()
+    >>> region['rows']
+    477
+    >>> region.rows
+    477
+    \endcode
+    """
+
+    def __getattr__(self, key):
+        return self[key]
+
+    def __setattr__(self, key, value):
+        self[key] = value
+
 # key-value parsers
 
 def parse_key_val(s, sep = '=', dflt = None, val_type = None, vsep = None):
@@ -500,7 +521,7 @@ def parse_key_val(s, sep = '=', dflt = None, val_type = None, vsep = None):
 
     @return parsed input (dictionary of keys/values)
     """
-    result = {}
+    result = KeyValue()
 
     if not s:
         return result