python 模块之间相互引用

模块层级关系:

----:  

  |->AA.py

  |->BB.py

  |->CC.py

AA.py

from BB import BB
class AA:
    def sub(self, x):
        bb = BB()
        bb.print_name()
        return x

    def print_name(self):
        print("AA")

BB.py

引入方法一:在文件头部直接引入,算是全局引入吧。

引入方法二:在函数内引入,算是局部引入吧。

##引入方式一
from AA import AA 

class BB:
    def add(self,x):     ##引入方式二
        from AA import AA
        aa = AA()
        aa.print_name()
        return  x

    def print_name(self):
        print("BB")

CC.py

from AA import  AA

if __name__ == ‘__main__‘:
    aa = AA()
    aa.sub(1)

运行模块CC:

如果在BB模块中

  使用引入方法一:

  

  如果使用引入方法二:

  

个人注解:

不知道原因。。。。暂时只是知道如果出现这种情况下,该怎么弄。

时间: 2024-08-03 02:34:59

python 模块之间相互引用的相关文章

Python模块的交叉引用问题分析

实际项目中遇到python模块相互引用问题,查资料,说是通过import局部导入的方式可以避免错误,资料如附录所述. 但更改后测试还是会出错,很疑惑!? 如果哪位读者有好的解决方法,敬请留言说明,谢谢. 所以,最好的方法是不进行交叉引用,如果需要就单独分一个模块出来. 附录:Python模块的交叉引用问题解读:How can I have modules that mutually import each other? 有下面两个文件相互引用,Python解释器报错. foo.py: from

利用delegate来解决类之间相互引用问题(引用死锁)

类之间相互引用--类A中需要调用类B中的方法,同时,类B中又要调用类A中的方法.(也被称为引用死锁,通常会出现编译错误). 解决方法是,在类A中引用类B,并使类A成为类B的delegate,这样在类A中就可以调用类B中的方法,而在类B中可以设一个delegate属性,(这个delegate其实就是类A)就可以用[delegate msg]的方式来调用类A中的方法了. 具体实现如下: ** classA.h : @interface ClassA<ClassBDelegate> { ClassB

node是如何实现模块之间相互独立的

普通html中通过<script>引入的js //name.js var name = 'name' //getName.js 在其中去访问name.js中的name变量 console.log (name);     =>name 上边导致的要给问题就是:当引入大量的js文件是模块之间  变量引用很难保证不重叠 在nodejs中 所有的js文件在node中执行前, 都会被包装进define(require,exports,module,_filePath,_fileName){   /

Python 模块之间的调用

user_main调用handle模块中的home方法,导入命令: from backend.login import handle handle模块中使用到了sql_api模块,导入命令: from backend.db import sql_api 这个目录里面,user_main调用了handle模块,handle模块调用了sql_api模块,sql_api模块里面使用了配置文件settings #user_main调用了handle模块 from backend.login import

Python 模块之间调用

__VERSION__ = '1.0' import xlrd as rd; import xlwt as wt; import os; class ExcelOperation(): def readExcel(self): excelDir=os.getcwd()+"\\"+"2222.xls"; book=rd.open_workbook(excelDir); sheet1=book.sheets()[0]; for i in range(sheet1.nro

python 模块之间的变量共享

才疏学浅,只知道两种方式: 1. 通过__builtin__实现: builtin1.py import __builtin__ __builtin__.some_global_var_among_modules='blablabla' builtin2.py import builtin1print some_global_var_among_modules 2. 通过类的静态属性实现 A.py class A: b=1 B.py import A print A.b

css笔记14:css文件之间可以相互引用

css文件之间相互引用是通过@import指令完成的 格式: @import  url("被引用的css文件"); 顺便说一句,如果希望在html或者php文件中引用某个xxx.css也是可以的 在<style>标签之中 <style>   @import   url("某个css文件"); </style>

[IOS] 静态库项目之间的相互引用

公司有不同的SDK,SDK之间也是相互引用,很多为了省事直接打包静态库发布 这就需要 静态库 之间相互引用,被引用的项目 为 DestationKit ,项目为 SourceKit 在Xcode6.1 下直接将 DestationKit 项目拖到 SourceKit 的项目中即可,不要拖到项目 的文件中去,添加搜索路径,为了方便管理项目直接将DestationKit 项目放在SourceKit 的项目下,详情如图 拖项目: 文件件结构: 搜索路径设置: "${SRCROOT}/../Destat

Vue-Router路由Vue-CLI脚手架和模块化开发 之 在单文件组件项目中定义数据、方法和组件之间的相互引用

定义数据 根据上一篇博文配置项目的结构的基础上继续进行优化: 在app.vue中的导出模块/组件部分设置其属性: export default{//导出模块/组件 data(){ return{ name:'perfect', count:0 } }, 在一个template标签中进行调用: <template> <div> <h2> 欢迎来到perfect*的博客园!!!</h2> <h3>{{name}}</h3> </te