[Python-checkins] CVS: python/dist/src/Lib inspect.py,1.23,1.24
Tim Peters
tim_one@users.sourceforge.net
Fri, 21 Sep 2001 23:10:57 -0700
Update of /cvsroot/python/python/dist/src/Lib
In directory usw-pr-cvs1:/tmp/cvs-serv8019/python/Lib
Modified Files:
inspect.py
Log Message:
Add a function to compute a class's method resolution order. This is
easy for 2.2 new-style classes, but trickier for classic classes, and
different approaches are needed "depending". The function will allow
later code to treat all flavors of classes uniformly.
Index: inspect.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/inspect.py,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -d -r1.23 -r1.24
*** inspect.py 2001/09/20 05:47:55 1.23
--- inspect.py 2001/09/22 06:10:55 1.24
***************
*** 164,167 ****
--- 164,185 ----
return results
+ # ----------------------------------------------------------- class helpers
+ def _searchbases(cls, accum):
+ # Simulate the "classic class" search order.
+ if cls in accum:
+ return
+ accum.append(cls)
+ for base in cls.__bases__:
+ _searchbases(base, accum)
+
+ def getmro(cls):
+ "Return tuple of base classes (including cls) in method resolution order."
+ if hasattr(cls, "__mro__"):
+ return cls.__mro__
+ else:
+ result = []
+ _searchbases(cls, result)
+ return tuple(result)
+
# -------------------------------------------------- source code extraction
def indentsize(line):