allow arbitrary attributes on classmethod and staticmethod (closes #14051)

This commit is contained in:
Benjamin Peterson 2012-02-19 01:10:25 -05:00
parent dc1d3eda1f
commit 01d7eba316
3 changed files with 43 additions and 3 deletions

View file

@ -1443,6 +1443,13 @@ order (MRO) for bases """
else:
self.fail("classmethod shouldn't accept keyword args")
cm = classmethod(f)
cm.x = 42
self.assertEqual(cm.x, 42)
self.assertEqual(cm.__dict__, {"x" : 42})
del cm.x
self.assertFalse(hasattr(cm, "x"))
@support.impl_detail("the module 'xxsubtype' is internal")
def test_classmethods_in_c(self):
# Testing C-based class methods...
@ -1474,6 +1481,12 @@ order (MRO) for bases """
self.assertEqual(d.goo(1), (1,))
self.assertEqual(d.foo(1), (d, 1))
self.assertEqual(D.foo(d, 1), (d, 1))
sm = staticmethod(None)
sm.x = 42
self.assertEqual(sm.x, 42)
self.assertEqual(sm.__dict__, {"x" : 42})
del sm.x
self.assertFalse(hasattr(sm, "x"))
@support.impl_detail("the module 'xxsubtype' is internal")
def test_staticmethods_in_c(self):