From: Guido van Rossum Date: Sat, 7 Jan 1995 11:58:15 +0000 (+0000) Subject: added getattr(), supporting __doc__ and _name__ X-Git-Tag: v1.2b1~62 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=29ca26eebf85b1919e0dae2e41e066334fbe7e9a;p=thirdparty%2FPython%2Fcpython.git added getattr(), supporting __doc__ and _name__ --- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index b391858f27d2..b770bce3c618 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -28,6 +28,26 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. /* Type object implementation */ +static object * +type_getattr(t, name) + typeobject *t; + char *name; +{ + if (strcmp(name, "__name__") == 0) + return newstringobject(t->tp_name); + if (strcmp(name, "__doc__") == 0) { + char *doc = t->tp_doc; + if (doc != NULL) + return newstringobject(doc); + INCREF(None); + return None; + } + if (strcmp(name, "__members__") == 0) + return mkvalue("[ss]", "__doc__", "__name__"); + err_setstr(AttributeError, name); + return NULL; +} + static object * type_repr(v) typeobject *v; @@ -45,8 +65,19 @@ typeobject Typetype = { 0, /* Item size for varobject */ 0, /*tp_dealloc*/ 0, /*tp_print*/ - 0, /*tp_getattr*/ + (getattrfunc)type_getattr, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_compare*/ - (reprfunc)type_repr, /*tp_repr*/ + (reprfunc)type_repr, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_xxx1*/ + 0, /*tp_xxx2*/ + 0, /*tp_xxx3*/ + 0, /*tp_xxx4*/ + "Define the behaviour of a particular type of object.", };