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

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.

主站蜘蛛池模板: 定兴县| 固安县| 鄯善县| 和政县| 天津市| 上高县| 绍兴市| 调兵山市| 苗栗县| 武隆县| 绥阳县| 永顺县| 江西省| 宁波市| 洛宁县| 镇江市| 永仁县| 高青县| 宁化县| 安龙县| 汉川市| 霍林郭勒市| 凤翔县| 边坝县| 固原市| 哈密市| 永昌县| 武城县| 曲靖市| 桐梓县| 盐源县| 区。| 佛学| 合作市| 高州市| 衡东县| 仁怀市| 万年县| 三明市| 太保市| 扶风县|