diff -r 61ca4732399b Lib/inspect.py --- a/Lib/inspect.py Wed Sep 04 14:30:16 2013 +0300 +++ b/Lib/inspect.py Wed Sep 04 19:49:30 2013 -0700 @@ -314,21 +314,21 @@ def classify_class_attrs(cls): names = dir(cls) result = [] for name in names: # Get the object associated with the name, and where it was defined. # Getting an obj from the __dict__ sometimes reveals more than # using getattr. Static and class methods are dramatic examples. # Furthermore, some objects may raise an Exception when fetched with # getattr(). This is the case with some descriptors (bug #1785). # Thus, we only use getattr() as a last resort. homecls = None - for base in (cls,) + mro: + for base in (cls,) + mro + (type(cls),): if name in base.__dict__: obj = base.__dict__[name] homecls = base break else: obj = getattr(cls, name) homecls = getattr(obj, "__objclass__", homecls) # Classify the object. if isinstance(obj, staticmethod):