From c4656004661da0064338b72a334d544a5977c60b Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Sat, 17 Jan 2009 22:41:18 +0000 Subject: [PATCH] Merged revisions 68676 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r68676 | benjamin.peterson | 2009-01-17 16:27:54 -0600 (Sat, 17 Jan 2009) | 1 line fix inspect.isclass() on instances with a custom __getattr__ #1225107 ........ --- Lib/inspect.py | 2 +- Lib/test/test_inspect.py | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Lib/inspect.py b/Lib/inspect.py index 45515fca566..54365313b1f 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -63,7 +63,7 @@ def isclass(object): Class objects provide these attributes: __doc__ documentation string __module__ name of module in which this class was defined""" - return isinstance(object, type) or hasattr(object, '__bases__') + return isinstance(object, type) def ismethod(object): """Return true if the object is an instance method. diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index b3aa28cf7ca..e2fe641ec03 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -74,7 +74,6 @@ def test_sixteen(self): def test_excluding_predicates(self): self.istest(inspect.isbuiltin, 'sys.exit') self.istest(inspect.isbuiltin, '[].append') - self.istest(inspect.isclass, 'mod.StupidGit') self.istest(inspect.iscode, 'mod.spam.__code__') self.istest(inspect.isframe, 'tb.tb_frame') self.istest(inspect.isfunction, 'mod.spam') @@ -99,6 +98,15 @@ def test_isroutine(self): self.assert_(inspect.isroutine(mod.spam)) self.assert_(inspect.isroutine([].count)) + def test_isclass(self): + self.istest(inspect.isclass, 'mod.StupidGit') + self.assertTrue(inspect.isclass(list)) + + class CustomGetattr(object): + def __getattr__(self, attr): + return None + self.assertFalse(inspect.isclass(CustomGetattr())) + def test_get_slot_members(self): class C(object): __slots__ = ("a", "b")