diff options
author | Guido van Rossum <guido@python.org> | 1995-01-07 11:58:15 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1995-01-07 11:58:15 (GMT) |
commit | 29ca26eebf85b1919e0dae2e41e066334fbe7e9a (patch) | |
tree | 7e7a86dfbcb2eb732a972b847e3734ed6bdab2e6 /Objects | |
parent | 016564ab51f991e7d67a62f4aa079df376ae549f (diff) | |
download | cpython-29ca26eebf85b1919e0dae2e41e066334fbe7e9a.zip cpython-29ca26eebf85b1919e0dae2e41e066334fbe7e9a.tar.gz cpython-29ca26eebf85b1919e0dae2e41e066334fbe7e9a.tar.bz2 |
added getattr(), supporting __doc__ and _name__
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/typeobject.c | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/Objects/typeobject.c b/Objects/typeobject.c index b391858..b770bce 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -29,6 +29,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.", }; |