Introspection, importing and Flash

Christopher T King squirrel at WPI.EDU
Tue Jun 29 18:17:00 CEST 2004


> 1. To send an arbitrary object to Flash, I would like to use 
> introspection to find out the values of all its instance variables. How 
> can I get their names? I've read about __dict__,  __slots__, and 
> __getattr__, but I am not sure what would be the most universal way to 
> get all the instance variable names from both old-style and new-style 
> objects. I would need something like __listattr__, which does not exist.

What you seek is the dir() function, in concert with the getattr()  
function. Note that dir() returns both hidden and visible methods as well
as instance variables. You can weed out the functions (if so desired) by
using the callable() function. Example:

for attrname in dir(object):
    attr=getattr(object,attrname)
    if not callable(attr):
        <do something>

> 2. Python class importing works in a rather confusing way. In Perl, I 
> have a top-level class AMF::Perl, which I "import" once and then create 
> its instance like this: "new AMF::Perl". The file Perl.pm lives in the 
> AMF directory.

Python modules can be either directories with __init__.py entries (as you 
have discovered) or a single file. If you rename AMFPython.py to AMF.py 
and place it in your program's main directory, you can then do either 
this:

import AMF
instance = AMF.AMFPython()

or this:

from AMF import AMFPython
instance = AMFPython()

The dotted import notation in Python is used to refer to modules contained 
in directories, not classes contained within modules.




More information about the Python-list mailing list