how to find available classes in a file ?

Ben Finney bignose+hates-spam at benfinney.id.au
Tue Jul 17 09:20:13 CEST 2007


Stef Mientki <S.Mientki-nospam at mailbox.kun.nl> writes:

> I want to have a (dynamically) list of all classes defined in a py-file.
> Is there a way of getting this list, without manually parsing the file ?

    >>> import random
    >>> for name in dir(random):
    ...     obj = getattr(random, name)
    ...     if isinstance(obj, type):
    ...             print "%(name)s is a type" % locals()
    ... 
    Random is a type
    SystemRandom is a type
    WichmannHill is a type
    _BuiltinMethodType is a type
    _MethodType is a type
    >>>

And, since you asked for just getting the list, here's the list of
names:

    >>> [name for (name, obj) in
    ...     [(name, getattr(random, name)) for name in dir(random)]
    ...     if isinstance(obj, type)]
    ['Random', 'SystemRandom', 'WichmannHill', '_BuiltinMethodType', '_MethodType']

Or the list of type objects themselves:

    >>> [obj for obj in
    ...     [getattr(random, name) for name in dir(random)]
    ...     if isinstance(obj, type)]
    [<class 'random.Random'>, <class 'random.SystemRandom'>, <class 'random.WichmannHill'>, <type 'builtin_function_or_method'>, <type 'instancemethod'>]


-- 
 \       "Pinky, are you pondering what I'm pondering?" "Well, I think |
  `\    so, Brain, but I can't memorize a whole opera in Yiddish."  -- |
_o__)                                            _Pinky and The Brain_ |
Ben Finney



More information about the Python-list mailing list