Kaydet (Commit) e9c430fd authored tarafından Guido van Rossum's avatar Guido van Rossum

Implemented __methods__ attribute

üst e6f7d18e
......@@ -130,6 +130,31 @@ typeobject Methodtype = {
0, /*tp_as_mapping*/
};
object *listmethods PROTO((struct methodlist *)); /* Forward */
static object *
listmethods(ml)
struct methodlist *ml;
{
int i, n;
object *v;
for (n = 0; ml[n].ml_name != NULL; n++)
;
v = newlistobject(n);
if (v != NULL) {
for (i = 0; i < n; i++)
setlistitem(v, i, newstringobject(ml[i].ml_name));
if (err_occurred()) {
DECREF(v);
v = NULL;
}
else {
sortlist(v);
}
}
return v;
}
/* Find a method in a module's method table.
Usually called from an object's getattr method. */
......@@ -139,6 +164,8 @@ findmethod(ml, op, name)
object *op;
char *name;
{
if (strcmp(name, "__methods__") == 0)
return listmethods(ml);
for (; ml->ml_name != NULL; ml++) {
if (strcmp(name, ml->ml_name) == 0)
return newmethodobject(ml->ml_name, ml->ml_meth, op);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment