summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1995-01-07 11:58:15 (GMT)
committerGuido van Rossum <guido@python.org>1995-01-07 11:58:15 (GMT)
commit29ca26eebf85b1919e0dae2e41e066334fbe7e9a (patch)
tree7e7a86dfbcb2eb732a972b847e3734ed6bdab2e6 /Objects
parent016564ab51f991e7d67a62f4aa079df376ae549f (diff)
downloadcpython-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.c35
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.",
};