我是Python的新手,我尝试使用类来像C++那样使用对象编程。在
我写了3.py文件。在
a.py
from b import *
class A:
def __init__(self):
self.m_tName = "A"
def test(self):
tB = B()
tB.do( self )
b.py公司
^{pr2}$在演示.py公司名称:
from a import *
if __name__ == "__main__":
tA = A()
tA.test()
如您所见,我希望使用a()对象来调用创建B()对象的成员函数test(),并调用使用a()对象的成员函数do()。在
所以在B::do()中,我想使用内置函数isinstance()检查参数。但是python告诉我有一个名称错误:全局名称'a'没有定义。在
在b.py文件的顶部导入A()类文件。在
有人知道我做错了什么吗?在
正如一些评论所指出的,如果以
from a import A
的形式导入,则循环依赖关系处理得不好。在简而言之,
... import *
的问题是,这会导致局部作用域的所有声明都被重写,这实际上导致了一个类(在您的例子中)来自哪个模块的标识。这正是你所面临的。在以以下方式更改}作为输出。在
import
语句,加上对a.A
的分类引用,将生成{作为附加信息,这已经在Why is "import *" bad?中讨论过了。我要特别指出这个答案:https://stackoverflow.com/a/2454460/1540197。在
**编辑:**这是article解释导入混乱。在
你有一个循环依赖关系,a.py和b.py互相导入。在
您可以在使用import语句的方法内部移动它。 所以b.py会变成:
相关问题 更多 >
编程相关推荐