Class introspection and dynamically determining function arguments
Mark English
Mark.English at liffe.com
Fri Jan 21 12:41:11 EST 2005
Diez B. Roggisch wrote:
> According to this
> http://www-106.ibm.com/developerworks/library/l-pyint.html
>
> not really - and there are no special moduls neccessary, as
> everything is at your hands using __dict__ and so on.
Thanks for the link. I'd read that article but found it was too
introductory (what is help, what is sys, etc.). It didn't even deal with
inspect. As such, I didn't think it was definitive about Python's
existing introspection code.
This was much more the level of sophistication I was looking for, albeit
aimed at (static) declared function syntax, rather than (dynamic)
instance or class attributes:
http://www.sff.net/people/neelk/open-source/Signature.py
Also, I know the class __dict__ (which is actually a proxy object) may
have class attributes currently, but that seems implementation
dependent. At the moment it lists the attributes defined by *this* type,
regardless of attributes defined in base types. Again, this happens to
be what I want but I don't know that this behaviour is defined anywhere,
and therefore it may be subject to change. It would be nice if I could
ask a class if there are any attributes defined for it in "tp_getset",
although that's just a small step along the path of attribute
discovery...
(Apologies for interchangeable use of the words type/class)
Nick Coghlan wrote
> Perhaps the simplest way is to require all such classes to have a
"getExample"
> class method that produces a fully populated example instance
Thanks Nick. This was the kind of approach I've ended up going with
(sorta). Still hunting for ideas...
-----------------------------------------------------------------------
The information contained in this e-mail is confidential and solely
for the intended addressee(s). Unauthorised reproduction, disclosure,
modification, and/or distribution of this email may be unlawful. If you
have received this email in error, please notify the sender immediately
and delete it from your system. The views expressed in this message
do not necessarily reflect those of LIFFE Holdings Plc or any of its subsidiary companies.
-----------------------------------------------------------------------
More information about the Python-list
mailing list