История изменений
Исправление wandrien, (текущая версия) :
vadim@aquila:/tmp$ grep . m*.py
m1.py:class Chain3:
m1.py: def func_3(self):
m1.py: print('func_3()')
m1.py:class Chain2:
m1.py: def __init__(self):
m1.py: self._c3 = Chain3()
m1.py: def func_2(self):
m1.py: print('func_2()')
m1.py: return self._c3
m1.py:class Chain1:
m1.py: def __init__(self):
m1.py: self._c2 = Chain2()
m1.py: def func_1(self):
m1.py: print('func_1()')
m1.py: return self._c2
m2.py:import m1
m2.py:m1.Chain1().func_1().func_2().func_3()
m2.py:m1.Chain1().func_3().func_2().func_1()
vadim@aquila:/tmp$ time mypy m2.py
m2.py:4: error: "Chain1" has no attribute "func_3"; maybe "func_1"? [attr-defined]
Found 1 error in 1 file (checked 1 source file)
real 0m0,740s
user 0m0,674s
sys 0m0,062s
Status: 1
vadim@aquila:/tmp$
740 миллисекунд на проверку 18 строк кода.
Исходная версия wandrien, :
vadim@aquila:/tmp$ grep . m*.py
m1.py:class Chain3:
m1.py: def func_3(self):
m1.py: print('func_3()')
m1.py:class Chain2:
m1.py: def __init__(self):
m1.py: self._c3 = Chain3()
m1.py: def func_2(self):
m1.py: print('func_2()')
m1.py: return self._c3
m1.py:class Chain1:
m1.py: def __init__(self):
m1.py: self._c2 = Chain2()
m1.py: def func_1(self):
m1.py: print('func_1()')
m1.py: return self._c2
m2.py:import m1
m2.py:m1.Chain1().func_1().func_2().func_3()
m2.py:m1.Chain1().func_3().func_2().func_1()
vadim@aquila:/tmp$ time mypy m2.py
m2.py:4: error: "Chain1" has no attribute "func_3"; maybe "func_1"? [attr-defined]
Found 1 error in 1 file (checked 1 source file)
real 0m0,740s
user 0m0,674s
sys 0m0,062s
Status: 1
vadim@aquila:/tmp$
740 миллисекунд на проверку 18 строк кода. Это победа! xD