Use __module__ attribute when available instead of using isclass() predicate
(functions and methods have grown the __module__ attribute too). See bug #570300.
diff --git a/Lib/inspect.py b/Lib/inspect.py
index 3c47cd9..5e3f7e2 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -370,7 +370,7 @@
     """Return the module an object was defined in, or None if not found."""
     if ismodule(object):
         return object
-    if isclass(object):
+    if hasattr(object, '__module__'):
         return sys.modules.get(object.__module__)
     try:
         file = getabsfile(object)