[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