(original) (raw)


On 10 Oct 2013 14:32, "Ethan Furman" <ethan@stoneleaf.us> wrote:
\>
\> 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 ?

Yeah, those work for me. The only way they should miss anything is if attribute lookup is customised to offer extra dynamic attributes without implementing custom dir support.

Cheers,
Nick.

>
\>
\> --
\> \~Ethan\~
\> \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
\> Python-Dev mailing list
\> Python-Dev@python.org
\> https://mail.python.org/mailman/listinfo/python-dev
\> Unsubscribe: https://mail.python.org/mailman/options/python-dev/ncoghlan%40gmail.com