From 33894be6572e1f205359947db8a1025a21f15788 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 27 Jan 1992 16:53:09 +0000 Subject: [PATCH] Added getattr and setattr built-in functions. --- Python/bltinmodule.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index d5870fe9dd7..4b6f301bb49 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -209,6 +209,40 @@ builtin_float(self, v) return NULL; } +static object * +builtin_getattr(self, v) + object *self; + object *v; +{ + object *name; + if (v == NULL || !is_tupleobject(v) || gettuplesize(v) != 2 || + (name = gettupleitem(v, 1), !is_stringobject(name))) { + err_setstr(TypeError, + "getattr() arguments must be (object, string)"); + return NULL; + } + return getattr(gettupleitem(v, 0), getstringvalue(name)); +} + +static object * +builtin_setattr(self, v) + object *self; + object *v; +{ + object *name; + if (v == NULL || !is_tupleobject(v) || gettuplesize(v) != 3 || + (name = gettupleitem(v, 1), !is_stringobject(name))) { + err_setstr(TypeError, + "setattr() arguments must be (object, string, object)"); + return NULL; + } + if (setattr(gettupleitem(v, 0), + getstringvalue(name), gettupleitem(v, 2)) != 0) + return NULL; + INCREF(None); + return None; +} + static object * builtin_hex(self, v) object *self; @@ -570,6 +604,7 @@ static struct methodlist builtin_methods[] = { {"eval", builtin_eval}, {"exec", builtin_exec}, {"float", builtin_float}, + {"getattr", builtin_getattr}, {"hex", builtin_hex}, {"input", builtin_input}, {"int", builtin_int}, @@ -584,6 +619,7 @@ static struct methodlist builtin_methods[] = { {"range", builtin_range}, {"raw_input", builtin_raw_input}, {"reload", builtin_reload}, + {"setattr", builtin_setattr}, {"type", builtin_type}, {NULL, NULL}, };