python – Import all classes in directory?

python – Import all classes in directory?

You can do something like this, although keep in mind isinstance(cls, type) only works with new-style classes.

import os, sys

path = os.path.dirname(os.path.abspath(__file__))

for py in [f[:-3] for f in os.listdir(path) if f.endswith(.py) and f != __init__.py]:
    mod = __import__(..join([__name__, py]), fromlist=[py])
    classes = [getattr(mod, x) for x in dir(mod) if isinstance(getattr(mod, x), type)]
    for cls in classes:
        setattr(sys.modules[__name__], cls.__name__, cls)

Lets assume your file structure is as follows:

/Foo
    A.py
    B.py
    C.py

To import all at once, you need to create the __init__.py file in the directory youd like to import everything from, with following code inside:

__all__ = [A, B, C]

This is the file structure after those changes:

/Foo
    A.py
    B.py
    C.py
    __init__.py

Then, you can simply use:

from Foo import *

python – Import all classes in directory?

Leave a Reply

Your email address will not be published.