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 *