0

I try to handle circular import, code as follows

logs.py

from settings import setting

def _print():
    if setting.is_print:
        print('yes')
    else:
        print('no')

setttings.py

from logs import _print


class Setting:
    def __init__(self):
        self.is_print = True

    @staticmethod
    def print_exception():
        return _print()


setting = Setting()

if __name__ == '__main__':
    setting.print_exception()

When I execute settings.py, output as below

ImportError: cannot import name '_print'

I tried changing file settings.py as follow

try:
    from logs import _print
except ImportError:
    pass

class Setting:
    def __init__(self):
        self.is_print = True

    @staticmethod
    def print_exception():
        return _print()


setting = Setting()

if __name__ == '__main__':
    setting.print_exception()

Output when running after changing setting.py

yes

I don't know what it happened

Peter
  • 120
  • 1
  • 8

1 Answers1

0
try:
    from logs import _print
except ImportError:
    pass

this block is making sure there is no import loop, so the code execute normally.