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
........
This commit is contained in:
Benjamin Peterson 2009-01-17 22:41:18 +00:00
parent 17c7cd8d02
commit c465600466
2 changed files with 10 additions and 2 deletions

View File

@ -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.

View File

@ -74,7 +74,6 @@ class TestPredicates(IsTestBase):
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 @@ class TestPredicates(IsTestBase):
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")