First of all: I do know that there are already many questions and answers to the topic of the circular imports.
The answer is more or less: \"Design your Module/Class s
You could just defer the import in bar.py like this:
class Bar(object): def __init__(self, arg_instance_of_foo): from foo import Foo if not isinstance(arg_instance_of_foo, Foo): raise TypeError()