diff -r 474f078ec958 Lib/pydoc.py --- a/Lib/pydoc.py Tue Mar 19 00:00:33 2013 -0400 +++ b/Lib/pydoc.py Mon Mar 18 21:15:32 2013 -0700 @@ -131,8 +131,10 @@ # The behaviour of %p is implementation-dependent in terms of case. return _re_stripid.sub(r'\1', text) -def _is_some_method(obj): - return inspect.ismethod(obj) or inspect.ismethoddescriptor(obj) +def _is_some_method(cls): + return (inspect.isfunction(cls) or + inspect.ismethod(cls) or + inspect.ismethoddescriptor(cls)) def allmethods(cl): methods = {} diff -r 474f078ec958 Lib/test/test_pydoc.py --- a/Lib/test/test_pydoc.py Tue Mar 19 00:00:33 2013 -0400 +++ b/Lib/test/test_pydoc.py Mon Mar 18 21:15:32 2013 -0700 @@ -420,6 +420,33 @@ self.assertTrue(pydoc.ispackage(test_dir)) os.remove(init_path) + def test_getting_all_methods_from_class(self): + class TestClass(object): + def method_returning_true(self): + return True + + self.assertEqual(pydoc.allmethods(TestClass), + {'method_returning_true': TestClass.method_returning_true, + '__format__': object.__format__, + '__str__': object.__str__, + '__repr__': object.__repr__, + '__le__': object.__le__, + '__reduce__': object.__reduce__, + '__init__': object.__init__, + '__subclasshook__': TestClass.__subclasshook__, + '__reduce_ex__': object.__reduce_ex__, + '__ge__': object.__ge__, + '__delattr__': object.__delattr__, + '__ne__': object.__ne__, + '__gt__': object.__gt__, + '__getattribute__': object.__getattribute__, + '__sizeof__': object.__sizeof__, + '__hash__': object.__hash__, + '__lt__': object.__lt__, + '__setattr__': object.__setattr__, + '__eq__': object.__eq__, + '__dir__': object.__dir__}) + class PydocImportTest(unittest.TestCase):