[Python-Dev] inspect() and dir()

Ethan Furman ethan at stoneleaf.us
Thu Oct 10 06:06:47 CEST 2013


On 10/09/2013 03:36 PM, Nick Coghlan wrote:
> On 10 Oct 2013 08:07, "Ethan Furman" wrote:
>> On 10/09/2013 02:46 PM, Nick Coghlan wrote:
>>> On 10 Oct 2013 03:39, "Ethan Furman" wrote:
>>>>
>>>> My apologies.  I am actually talking about the module.  I meant
>>>>  inspect.get_members() and inspect.classify_class_attrs(), which,
>>>>  as near as I can tell, are the only two functions in inspect that
>>>>  attempt to retrieve/look at all of an object's attributes.
>>>
>>> Those have to depend on __dir__ so classes (especially proxies)
>>>  can accurately report *extra* dynamically accessible names.
>>
>> Indeed, my rough idea is to use the results of the new dir() and
>>  combining that with the results of the old dir().  The use case
>>  being that some classes *ahem* Enum *ahem* may report *less* than
>>  is actually available, but introspection should reveal whatever is
>>  there even if dir() is not reporting it.
>
> Not necessarily. For autocompletion, for example, you probably
> only want the public stuff. That's why I'm inclined to suggest
>  the existing functions should continue to only report advertised
> attributes, with a separate introspection API that tries harder
>  to find all accessible attributes (potentially including those
> from the metaclass). That way users can choose the one most
>  appropriate to their use case, as well as being able to use the
>  latter to help test custom dir support.

That makes sense.

So what should the new functions be called?  get_all_members and classify_all_class_attrs ?

--
~Ethan~


More information about the Python-Dev mailing list