]> granicus.if.org Git - python/commitdiff
inspect.classify_class_attrs: Classify object.__new__ and __init__ correctly #18801
authorYury Selivanov <yselivanov@sprymix.com>
Fri, 31 Jan 2014 19:28:44 +0000 (14:28 -0500)
committerYury Selivanov <yselivanov@sprymix.com>
Fri, 31 Jan 2014 19:28:44 +0000 (14:28 -0500)
Lib/inspect.py
Lib/test/test_inspect.py

index e6c7b5b634ef2c0a759c675793647c6ba1090238..8de9892afe2f893b4d46f07759db0f88833f7725 100644 (file)
@@ -412,7 +412,7 @@ def classify_class_attrs(cls):
         elif isinstance(dict_obj, property):
             kind = "property"
             obj = dict_obj
-        elif isfunction(obj) or ismethoddescriptor(obj):
+        elif isroutine(obj):
             kind = "method"
         else:
             kind = "data"
index f06b5b4ff47b706133b007621cb138aff23896af..477f6016289873367cd31e45759a1d5b38ca16cf 100644 (file)
@@ -646,6 +646,10 @@ class TestClassesAndFunctions(unittest.TestCase):
             md = _BrokenMethodDescriptor()
 
         attrs = attrs_wo_objs(A)
+
+        self.assertIn(('__new__', 'method', object), attrs, 'missing __new__')
+        self.assertIn(('__init__', 'method', object), attrs, 'missing __init__')
+
         self.assertIn(('s', 'static method', A), attrs, 'missing static method')
         self.assertIn(('c', 'class method', A), attrs, 'missing class method')
         self.assertIn(('p', 'property', A), attrs, 'missing property')