[Checkins] SVN: Products.BTreeFolder2/trunk/ __getattr__, _getOb optimizations

Nikolay Kim fafhrd91 at gmail.com
Thu Jul 21 12:28:52 EDT 2011


Log message for revision 122311:
  __getattr__, _getOb optimizations

Changed:
  U   Products.BTreeFolder2/trunk/CHANGES.txt
  U   Products.BTreeFolder2/trunk/src/Products/BTreeFolder2/BTreeFolder2.py

-=-
Modified: Products.BTreeFolder2/trunk/CHANGES.txt
===================================================================
--- Products.BTreeFolder2/trunk/CHANGES.txt	2011-07-21 07:27:54 UTC (rev 122310)
+++ Products.BTreeFolder2/trunk/CHANGES.txt	2011-07-21 16:28:51 UTC (rev 122311)
@@ -6,7 +6,9 @@
 
 - Add some tests for correct `getattr` behavior.
 
+- __getattr__, _getOb optimizations
 
+
 2.13.3 (2011-03-15)
 -------------------
 

Modified: Products.BTreeFolder2/trunk/src/Products/BTreeFolder2/BTreeFolder2.py
===================================================================
--- Products.BTreeFolder2/trunk/src/Products/BTreeFolder2/BTreeFolder2.py	2011-07-21 07:27:54 UTC (rev 122310)
+++ Products.BTreeFolder2/trunk/src/Products/BTreeFolder2/BTreeFolder2.py	2011-07-21 16:28:51 UTC (rev 122311)
@@ -208,16 +208,13 @@
     def _getOb(self, id, default=_marker):
         """Return the named object from the folder.
         """
-        tree = self._tree
-        if default is _marker:
-            ob = tree[id]
-            return ob.__of__(self)
-        else:
-            ob = tree.get(id, _marker)
-            if ob is _marker:
-                return default
+        try:
+            return self._tree[id].__of__(self)
+        except KeyError:
+            if default is _marker:
+                raise
             else:
-                return ob.__of__(self)
+                return default
 
     security.declareProtected(access_contents_information, 'get')
     def get(self, name, default=None):
@@ -231,10 +228,10 @@
         # to subitems, and __bobo_traverse__ hooks don't work with
         # restrictedTraverse() unless __getattr__() is also present.
         # Oh well.
-        res = self._tree.get(name)
-        if res is None:
+        try:
+            return self._tree[name]
+        except KeyError:
             raise AttributeError(name)
-        return res
 
     def _setOb(self, id, object):
         """Store the named object in the folder.



More information about the checkins mailing list