]> granicus.if.org Git - python/commitdiff
SF patch #493452: docstrings for staticmethod/classmethod (Skip
authorGuido van Rossum <guido@python.org>
Mon, 17 Dec 2001 02:53:53 +0000 (02:53 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 17 Dec 2001 02:53:53 +0000 (02:53 +0000)
Montanaro)

(With minor adjustments.)

Objects/funcobject.c

index ee016df4b6e56ba930abfba20a56e62ac3ef7e5e..6d7f29da788b650b45f1efe7da30b34f78691a5d 100644 (file)
@@ -491,6 +491,27 @@ cm_init(PyObject *self, PyObject *args, PyObject *kwds)
        return 0;
 }
 
+static char classmethod_doc[] =
+"classmethod(function) -> method\n\
+\n\
+Convert a function to be a class method.\n\
+\n\
+A class method receives the class as implicit first argument,\n\
+just like an instance method receives the instance.\n\
+To declare a class method, use this idiom:\n\
+\n\
+  class C:\n\
+      def f(cls, arg1, arg2, ...): ...\n\
+      f = classmethod(f)\n\
+\n\
+It can be called either on the class (e.g. C.f()) or on an instance\n\
+(e.g. C().f()).  The instance is ignored except for its class.\n\
+If a class method is called for a derived class, the derived class\n\
+object is passed as the implied first argument.\n\
+
+Class methods are different than C++ or Java static methods.\n\
+If you want those, see the staticmethod builtin.";
+
 PyTypeObject PyClassMethod_Type = {
        PyObject_HEAD_INIT(&PyType_Type)
        0,
@@ -513,7 +534,7 @@ PyTypeObject PyClassMethod_Type = {
        0,                                      /* tp_setattro */
        0,                                      /* tp_as_buffer */
        Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
-       0,                                      /* tp_doc */
+       classmethod_doc,                        /* tp_doc */
        0,                                      /* tp_traverse */
        0,                                      /* tp_clear */
        0,                                      /* tp_richcompare */
@@ -602,6 +623,24 @@ sm_init(PyObject *self, PyObject *args, PyObject *kwds)
        return 0;
 }
 
+static char staticmethod_doc[] =
+"staticmethod(function) -> method\n\
+\n\
+Convert a function to be a static method.\n\
+\n\
+A static method does not receive an implicit first argument.\n\
+To declare a static method, use this idiom:\n\
+\n\
+     class C:\n\
+         def f(arg1, arg2, ...): ...\n\
+        f = staticmethod(f)\n\
+\n\
+It can be called either on the class (e.g. C.f()) or on an instance\n\
+(e.g. C().f()).  The instance is ignored except for its class.\n\
+\n\
+Static methods in Python are similar to those found in Java or C++.\n\
+For a more advanced concept, see the classmethod builtin.";
+
 PyTypeObject PyStaticMethod_Type = {
        PyObject_HEAD_INIT(&PyType_Type)
        0,
@@ -624,7 +663,7 @@ PyTypeObject PyStaticMethod_Type = {
        0,                                      /* tp_setattro */
        0,                                      /* tp_as_buffer */
        Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
-       0,                                      /* tp_doc */
+       staticmethod_doc,                       /* tp_doc */
        0,                                      /* tp_traverse */
        0,                                      /* tp_clear */
        0,                                      /* tp_richcompare */