Python通常不会做严格的类型定义,但是如果是常用且固定的数据结构,定义清楚的话使用起来会更方便(至少在打.之后)对象,IDE会自动提示方法和属性名称)。这时候可能会循环引用一个复杂的结构,比如:fromtypingimportListclassA:x:stry:BclassB:w:List[A]这种代码连编译都过不了,会在'y:B',这个位置,直接提示:'UnresolvedreferenceB'。有两种解决方案:继续在同一个文件中定义类。这时候可以加一个特殊的引用:from__future__importannotations,告诉编译器先“读通”整个文件,再处理打字注解,这样就可以避免上述问题。在拆分成不同模块的情况下,引用另一个类时,直接引用它的模块而不是类名:Module1.pyfrom。importModule2classA:x:stry:Module2.BModule2.pyfrom输入importListfrom。importModule1classB:w:List[Module1.A]2021-11-17更新调整导入顺序在python代码中,导入顺序是有影响的,比如我的一个项目中,某些类是这样的:fromsimplerpa.core.data.ActionimportActionfromsimplerpa.core.action.ActionScreenimportActionScreenclassExecutor:pass...fromsimplerpa.core.action.ActionDataimportActionDatafromsimplerpa.core.action.ActionImageimportActionImagefromsimplerpa.core。action.ActionKeyboardimportActionKeyboardfromsimplerpa.core.action.ActionScreenimportActionScreenclassAction:pass...fromsimplerpa.core.action.ActionImageimportActionImageclassActionScreen:Excecutorimportbeforepass,ActionisbehindActionScreen,死活提示“无法导入ActionImage”,颠倒顺序就可以了。不过奇怪的是,既然调整完毕,现在调回去也没有错。..仔细查看了当时调整的git日志,即使是完全恢复到当时的状态,也没有报错(悲哀。。。)。不管怎样,调整顺序也是一个值得尝试的方法。而pycharm有个坑。它的“优化导入”功能不仅会删除无用的导入,还会自动调整导入的顺序。有可能优化后,代码跑不起来。
