[Python-Dev] cpython: move specialized dir implementations into __dir__ methods (closes #12166)

Georg Brandl g.brandl at gmx.net
Tue May 24 19:28:33 CEST 2011


On 24.05.2011 18:08, benjamin.peterson wrote:
> http://hg.python.org/cpython/rev/8f403199f999
> changeset:   70331:8f403199f999
> user:        Benjamin Peterson <benjamin at python.org>
> date:        Tue May 24 11:09:06 2011 -0500
> summary:
>   move specialized dir implementations into __dir__ methods (closes #12166)

> +static PyMethodDef module_methods[] = {
> +    {"__dir__", module_dir, METH_NOARGS,
> +     PyDoc_STR("__dir__() -> specialized dir() implementation")},
> +    {0}
> +};

>  static PyMethodDef type_methods[] = {
>      {"mro", (PyCFunction)mro_external, METH_NOARGS,
>       PyDoc_STR("mro() -> list\nreturn a type's method resolution order")},
> @@ -2585,6 +2661,8 @@
>       PyDoc_STR("__instancecheck__() -> check if an object is an instance")},
>      {"__subclasscheck__", type___subclasscheck__, METH_O,
>       PyDoc_STR("__subclasscheck__() -> check if a class is a subclass")},
> +    {"__dir__", type_dir, METH_NOARGS,
> +     PyDoc_STR("__dir__() -> specialized __dir__ implementation for types")},

>  static PyMethodDef object_methods[] = {
>      {"__reduce_ex__", object_reduce_ex, METH_VARARGS,
>       PyDoc_STR("helper for pickle")},
> @@ -3449,6 +3574,8 @@
>       PyDoc_STR("default object formatter")},
>      {"__sizeof__", object_sizeof, METH_NOARGS,
>       PyDoc_STR("__sizeof__() -> size of object in memory, in bytes")},
> +    {"__dir__", object_dir, METH_NOARGS,
> +     PyDoc_STR("__dir__() -> default dir() implementation")},

This is interesting: I though we use "->" to specify the return value (or
its type).  __instancecheck__ and __subclasscheck__ set a different
precedent, while __sizeof__ follows.

I didn't look at the files to check for other examples.

Georg



More information about the Python-Dev mailing list