2006年09月28日 星期四 09:03
有两个模块,或者叫脚本,其中一个定义了类A,另外一个定义了类B。而运行时又需要互相引用对方的类。这时就会弹出ImportError。 比如如下是两个模块的代码: # File: crossimport.py from crossimport2 import B def hello(): print "Hello" crossimport2.hello2() return class A: def __init__(self): return def show(self): print "A.show()" return # File: crossimport2.py from crossimport import A def hello2(): print "Hello2" return #crossimport.hello() class B: def __init__(self): return def show(self): print "B.show()" return 这时运行crossimport.py会弹出错误提示无法导入类B。请问这个如何解决。 我也想到了,可能是由于在导入crossimport2模块时,又执行了import crossimport。所以尚未查找到B时就返回或者死循环了。但是关键是如何解决。这种互相 引用的问题还比较多。 -- 从前有一只很冷的毛毛虫,他想获得一点温暖。而获得温暖的机会只有从树上掉下来,落进别人的领口。 片刻的温暖,之后便失去生命。而很多同类却连这片刻的温暖都没有得到就.. 我会得到温暖么?小心翼翼的尝试,却还是会受到伤害。 我愿为那一刻的温暖去拼,可是谁愿意接受? 欢迎访问偶的博客: http://blog.csdn.net/gashero
2006年09月28日 星期四 10:49
把两个类合在一个文件里面写 On 9/27/06, gashero <harry.python在gmail.com> wrote: > 有两个模块,或者叫脚本,其中一个定义了类A,另外一个定义了类B。而运行时又需要互相引用对方的类。这时就会弹出ImportError。 > 比如如下是两个模块的代码: > # File: crossimport.py > from crossimport2 import B > > def hello(): > print "Hello" > crossimport2.hello2() > return > > class A: > def __init__(self): > return > > def show(self): > print "A.show()" > return > > > # File: crossimport2.py > > from crossimport import A > > def hello2(): > print "Hello2" > return > > #crossimport.hello() > > class B: > def __init__(self): > return > > def show(self): > print "B.show()" > return > > 这时运行crossimport.py会弹出错误提示无法导入类B。请问这个如何解决。 > 我也想到了,可能是由于在导入crossimport2模块时,又执行了import > crossimport。所以尚未查找到B时就返回或者死循环了。但是关键是如何解决。这种互相 引用的问题还比较多。 > > -- > 从前有一只很冷的毛毛虫,他想获得一点温暖。而获得温暖的机会只有从树上掉下来,落进别人的领口。 > 片刻的温暖,之后便失去生命。而很多同类却连这片刻的温暖都没有得到就.. > 我会得到温暖么?小心翼翼的尝试,却还是会受到伤害。 > 我愿为那一刻的温暖去拼,可是谁愿意接受? > > 欢迎访问偶的博客: > http://blog.csdn.net/gashero > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese
2006年09月28日 星期四 10:54
你可以在用的地方 import, 别在文件头import。 On 9/28/06, gashero <harry.python在gmail.com> wrote: > 有两个模块,或者叫脚本,其中一个定义了类A,另外一个定义了类B。而运行时又需要互相引用对方的类。这时就会弹出ImportError。 > 比如如下是两个模块的代码: > # File: crossimport.py > from crossimport2 import B > > def hello(): > print "Hello" > crossimport2.hello2() > return > > class A: > def __init__(self): > return > > def show(self): > print "A.show()" > return > > > # File: crossimport2.py > > from crossimport import A > > def hello2(): > print "Hello2" > return > > #crossimport.hello() > > class B: > def __init__(self): > return > > def show(self): > print "B.show()" > return > > 这时运行crossimport.py会弹出错误提示无法导入类B。请问这个如何解决。 > 我也想到了,可能是由于在导入crossimport2模块时,又执行了import > crossimport。所以尚未查找到B时就返回或者死循环了。但是关键是如何解决。这种互相 引用的问题还比较多。 > > -- > 从前有一只很冷的毛毛虫,他想获得一点温暖。而获得温暖的机会只有从树上掉下来,落进别人的领口。 > 片刻的温暖,之后便失去生命。而很多同类却连这片刻的温暖都没有得到就.. > 我会得到温暖么?小心翼翼的尝试,却还是会受到伤害。 > 我愿为那一刻的温暖去拼,可是谁愿意接受? > > 欢迎访问偶的博客: > http://blog.csdn.net/gashero > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- Gary JiaSoftware Engineer Exoweb Ltd.
2006年09月28日 星期四 10:57
很无奈的方法,希望得到一些更好的解法。另外,感觉错误的根源在于在文件顶部引用其他模块。所以能否在某一段代码内部使用import方法导入模块,然后用过之后在清除导入的结果呢?
2006年09月28日 星期四 11:05
Java是没有这个问题的,Python怎么在这个小事情上栽了C语言中#include的跟头了。
2006年09月28日 星期四 11:30
python faq里专门提到了这个问题 http://www.python.org/doc/faq/programming.html#what-are-the-best-practices-for-using-import-in-a-module 其实如果出现这种需求关键是设计上耦合太紧密,关键还是从design上避免 ----- Original Message ----- From: "gashero" <harry.python at gmail.com> To: <python-chinese at lists.python.cn> Sent: Thursday, September 28, 2006 10:57 AM Subject: Re: [python-chinese]Python的交叉引用 ImportError > 很无奈的方法,希望得到一些更好的解法。另外,感觉错误的根源在于在文件顶部引用其他模块。所以能否在某一段代码内部使用import方法导入模块,然后用过之后在清除导入的结果呢? > _______________________________________________ > python-chinese > Post: send python-chinese at lists.python.cn > Subscribe: send subscribe to python-chinese-request at lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese
2006年09月28日 星期四 12:30
C 的 include 有什么 问题啊. 么机 写成 一个 文件就完了 On 9/28/06, gashero <harry.python at gmail.com> wrote: > Java是没有这个问题的,Python怎么在这个小事情上栽了C语言中#include的跟头了。 > _______________________________________________ > python-chinese > Post: send python-chinese at lists.python.cn > Subscribe: send subscribe to python-chinese-request at lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese
2006年09月28日 星期四 12:36
象这样import当然不行,只能说明你设计有问题。
2006年09月28日 星期四 23:28
在Python里面文件是一个容器(名空间),两个名空间出现交叉引用说明设计上应该合并. On 9/28/06, 3751 <lwm3751在gmail.com> wrote: > > 象这样import当然不行,只能说明你设计有问题。 > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- Linker M Lin linkerlin88在gmail.com linker.m.lin在gmail.com ※※※※※※※※※ ※※我思故我在※※ ※※※※※※※※※ -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20060928/4d62ae7f/attachment.html
2006年09月28日 星期四 23:35
%«ÚÛM:ÿßöò¬ êè ªëÊਥrjöÊØh(§r[zÜ)Þ±ãè²ÛÚr¶'r§zÇ¥Ël§+a¢w'Jæìr¸zǧv˱Êâmëh§+a¢w!w¬z·ª¹ë-+-²ÜIì¹»®&Þ±éݺ{.nÇ+·¢Ü)Þ±êު笶X¬¶Êr¶'rpÞµ¨¥"wèÛiÿúr¶'ræj)fjåËbú?§+a¢w!w¬zm§ÿÛ±ÙçzßÜq«Lj·!.+LÂÔD¸m¶ÿ§+a¢w'þ©z¹_éÊØhÈbëý«miÈfz{lÿm4ëOvóöû×ÛÚ¶Ög§¶f
Zeuux © 2025
京ICP备05028076号