Index: Python/bltinmodule.c =================================================================== --- Python/bltinmodule.c (Revision 66222) +++ Python/bltinmodule.c (Arbeitskopie) @@ -2301,6 +2301,7 @@ SETBUILTIN("frozenset", &PyFrozenSet_Type); SETBUILTIN("property", &PyProperty_Type); SETBUILTIN("int", &PyLong_Type); + SETBUILTIN("instancemethod", &PyInstanceMethod_Type); SETBUILTIN("list", &PyList_Type); SETBUILTIN("map", &PyMap_Type); SETBUILTIN("object", &PyBaseObject_Type); Index: Lib/test/test_builtin.py =================================================================== --- Lib/test/test_builtin.py (Revision 66222) +++ Lib/test/test_builtin.py (Arbeitskopie) @@ -49,6 +49,15 @@ def write(self, line): pass +def testfunction(self): + """some doc""" + return self + +class InstanceMethod: + id = instancemethod(id) + testfunction = instancemethod(testfunction) + + test_conv_no_sign = [ ('0', 0), ('1', 1), @@ -565,6 +574,17 @@ id([0,1,2,3]) id({'spam': 1, 'eggs': 2, 'ham': 3}) + def test_instancemethod(self): + inst = InstanceMethod() + self.assertEqual(id(inst), inst.id()) + self.assert_(inst.testfunction() is inst) + self.assertEqual(inst.testfunction.__doc__, testfunction.__doc__) + self.assertEqual(InstanceMethod.testfunction.__doc__, testfunction.__doc__) + + InstanceMethod.testfunction.attribute = "test" + self.assertEqual(testfunction.attribute, "test") + self.assertRaises(AttributeError, setattr, inst.testfunction, "attribute", "test") + # Test input() later, alphabetized as if it were raw_input def test_iter(self):