官术网_书友最值得收藏!

Importing a cyclic dependency

There is something that might trip us up when we're importing a module that shares the same package. Sometimes, the module we're importing wants to import us as well. This is called a cyclic dependency. When we try to import a cyclic dependency, we'll almost always get an attribute error exception, as in the following example:

That happens because when we ask Python to import the first module, Python immediately creates a module object for it and begins executing the code in the module.

That's fine, except that, when Python gets to the import statement for the next module in this cycle, it pauses running the code in the first module, leaving it not fully initialized. Even that isn't normally a problem because Python will come back and finish the initialization later.

However, when the second module asks to import the first module, Python just hands it the already allocated, and not fully initialized, module object. When the second module tries to access the variables stored in the first object, many of them will not yet have been created. Hence, an attribute error is raised.

主站蜘蛛池模板: 马山县| 焉耆| 台南市| 辽中县| 盐亭县| 丰顺县| 贺兰县| 柳河县| 黄冈市| 伽师县| 琼结县| 于都县| 兴义市| 涿鹿县| 陆丰市| 简阳市| 平邑县| 西贡区| 三门县| 洛浦县| 福建省| 江津市| 临清市| 济宁市| 陕西省| 梅州市| 静宁县| 重庆市| 镇原县| 桐乡市| 闸北区| 景宁| 拉孜县| 吉林省| 吐鲁番市| 庆阳市| 阳谷县| 北辰区| 溆浦县| 通城县| 通州市|