mirror of
https://github.com/python/cpython.git
synced 2025-08-11 04:19:06 +00:00
allow arbitrary attributes on classmethod and staticmethod (closes #14051)
This commit is contained in:
parent
dc1d3eda1f
commit
01d7eba316
3 changed files with 43 additions and 3 deletions
|
@ -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):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue