Use descriptors.
diff --git a/Lib/test/test_datetime.py b/Lib/test/test_datetime.py
index d1f312d..9abfb87 100644
--- a/Lib/test/test_datetime.py
+++ b/Lib/test/test_datetime.py
@@ -446,9 +446,9 @@
     def test_subclass_timedelta(self):
 
         class T(timedelta):
+            @staticmethod
             def from_td(td):
                 return T(td.days, td.seconds, td.microseconds)
-            from_td = staticmethod(from_td)
 
             def as_hours(self):
                 sum = (self.days * 24 +
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index f1abd3a..c1bd00d 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -691,13 +691,13 @@
     class _instance(object):
         pass
     class M2(object):
+        @staticmethod
         def __new__(cls, name, bases, dict):
             self = object.__new__(cls)
             self.name = name
             self.bases = bases
             self.dict = dict
             return self
-        __new__ = staticmethod(__new__)
         def __call__(self):
             it = _instance()
             # Early binding of methods
@@ -2071,9 +2071,9 @@
         aProp = property(lambda self: "foo")
 
     class Sub(Base):
+        @classmethod
         def test(klass):
             return super(Sub,klass).aProp
-        test = classmethod(test)
 
     veris(Sub.test(), Base.aProp)
 
diff --git a/Lib/test/test_descrtut.py b/Lib/test/test_descrtut.py
index 851ce4a..9dcfca1 100644
--- a/Lib/test/test_descrtut.py
+++ b/Lib/test/test_descrtut.py
@@ -246,9 +246,9 @@
 
     >>> class C:
     ...
+    ...     @staticmethod
     ...     def foo(x, y):
     ...         print "staticmethod", x, y
-    ...     foo = staticmethod(foo)
 
     >>> C.foo(1, 2)
     staticmethod 1 2
@@ -260,9 +260,9 @@
 implicit first argument that is the *class* for which they are invoked.
 
     >>> class C:
+    ...     @classmethod
     ...     def foo(cls, y):
     ...         print "classmethod", cls, y
-    ...     foo = classmethod(foo)
 
     >>> C.foo(1)
     classmethod test.test_descrtut.C 1
@@ -286,10 +286,10 @@
 But notice this:
 
     >>> class E(C):
+    ...     @classmethod
     ...     def foo(cls, y): # override C.foo
     ...         print "E.foo() called"
     ...         C.foo(y)
-    ...     foo = classmethod(foo)
 
     >>> E.foo(1)
     E.foo() called
diff --git a/Lib/test/test_doctest2.py b/Lib/test/test_doctest2.py
index 5b7f36f..865a32e 100644
--- a/Lib/test/test_doctest2.py
+++ b/Lib/test/test_doctest2.py
@@ -80,6 +80,7 @@
         -12
         """)
 
+    @staticmethod
     def statm():
         """
         A static method.
@@ -91,8 +92,7 @@
         """
         return 666
 
-    statm = staticmethod(statm)
-
+    @classmethod
     def clsm(cls, val):
         """
         A class method.
@@ -104,8 +104,6 @@
         """
         return val
 
-    clsm = classmethod(clsm)
-
 def test_main():
     from test import test_doctest2
     EXPECTED = 19
diff --git a/Lib/test/test_userdict.py b/Lib/test/test_userdict.py
index cc5b0ed..2d5fa03 100644
--- a/Lib/test/test_userdict.py
+++ b/Lib/test/test_userdict.py
@@ -191,12 +191,12 @@
         for key, value in self.iteritems():
             d[key] = value
         return d
+    @classmethod
     def fromkeys(cls, keys, value=None):
         d = cls()
         for key in keys:
             d[key] = value
         return d
-    fromkeys = classmethod(fromkeys)
 
 class UserDictMixinTest(mapping_tests.TestMappingProtocol):
     type2test = SeqDict