]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Added getattr and setattr built-in functions.
authorGuido van Rossum <guido@python.org>
Mon, 27 Jan 1992 16:53:09 +0000 (16:53 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 27 Jan 1992 16:53:09 +0000 (16:53 +0000)
Python/bltinmodule.c

index d5870fe9dd785ba04b01840b4de58638e3c4eae1..4b6f301bb4997d37266982beed40fcf58c9a00ca 100644 (file)
@@ -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},
 };