当前位置: 首页 > 面试题库 >

python中的简单交叉导入

商皓
2023-03-14
问题内容

我想将代码放在不同的类中,并将它们放入不同的文件中。但是这些类是相互依赖的。

main.py:

from lib import A, B

def main():
    a = A()
    b = B()
    a.hello()
    b.hello()

if __name__ == '__main__':
    main()

lib / _ 初始化 _.py

from a import A
from b import B

lib / a.py:

import lib.B

class A():
    def __init__(self):
        print "A"

    def hello(self):
        print "hello A"
        b = B()

lib / b.py:

import lib.A

class B():
    def __init__(self):
        print "B"

    def hello(self):
        print "hello B"
        a = A()

是否可以在Python中做到这一点?

编辑:

我收到此错误消息:

pydev debugger: starting
Traceback (most recent call last):
  File "eclipse-python/plugins/org.python.pydev_2.7.1.2012100913/pysrc/pydevd.py", line 1397, in <module>
    debugger.run(setup['file'], None, None)
  File "eclipse-python/plugins/org.python.pydev_2.7.1.2012100913/pysrc/pydevd.py", line 1090, in run
    pydev_imports.execfile(file, globals, locals) #execute the script
  File "main.py", line 2, in <module>
    from lib import A, B
  File "lib/__init__.py", line 1, in <module>
    from a import A
  File "lib/a.py", line 1, in <module>
    import lib.B
ImportError: No module named B

问题答案:

您可以在hello函数中导入其他模块,而不必在顶部导入模块。

class B():
    def __init__(self):
        print "B"

    def hello(self):
        import lib.A
        print "hello B"
        a = A()


 类似资料:
  • 问题内容: 尝试学习python时遇到了这个问题。考虑以下功能: s1和s2将打印什么? 运行该问题后,我发现print语句将打印12。似乎s1和s2的值未从函数中更改。我能想到的唯一解释是因为线条。 由于s1 [:]是一个副本,因此有道理s1的值在函数调用中不会改变。但是,因为的参数是(s1,s2),所以不确定tmp = s1 [:]之后是否。每当我做 它是对s1副本的引用,而不是s1本身。有人

  • 我知道在Python中,如果我有: 我可以做以下操作来找到两者之间的交集: 但这种方法有一个问题:集合不能像列表那样维持秩序。如果我真的有: 我得到: 即使我更喜欢从第一个列表的顺序,即。: 是否有其他交叉点技术可以将生成的“交叉点集”保持与第一个列表相同的顺序?

  • 问题内容: 我正在学习AngularJs的学习过程,发现几乎没有任何示例可用于现实世界。 我试图对如何使用最标准的组件提交表单并将其传递给PHP文件有一个清晰的了解。 我的小提琴。 有人在提交简单,无污染的表单方面有什么好的例子吗,这些表单会对我以及其他许多Angularjs初学者有所帮助。 当我说一个干净的表格时,我指的是这样的东西。 我的ng-app代码… 我猜我接下来要问的三个问题是… 我的

  • 我想将一些代码从python 2移植到python 3,但由于导入错误而失败。因此,我试图通过创建2个基本的python文件来测试来摆脱移植本身并专注于导入。但是,我甚至无法让它们起作用。 所以我有2个文件 test.py: 和test2.py: 然而,结果是Py魅力中的这个错误: ImportError:无法从“__main__”(C:/Users/Username/test2.py)导入名称“

  • 在二分图中,左边有n个节点,右边有m个节点。节点的顺序是从1到n和从1到m。左边的节点连接到右边的节点。没有连接所有节点。对于例如: 我想知道如何像一些用户提到的那样,通过使用二进制索引树来解决这个问题。我用O(n^2)algo求解,得到Tle。 这不是家庭作业。昨天我学习了BIT,正在寻找一些问题,所以我遇到了这个。告诉我诀窍。请不要写整个程序。

  • 问题内容: 为什么我的猫没有nlegs属性? 我们应该从内部显式调用,还是应该做更有趣的事情? 如果我想创建一条5条腿的猫该怎么办,是否需要向该接口添加其他参数? 问题答案: 要建立在其他人都说过的基础上,是的,您需要调用父方法。 通常最好使用super。但是,在某些情况下(尤其是当您从多个类继承时),这可能是一个大难题。我将避免赘述,不乏讨论它的各种文章。(此外,其他一些“特殊”功能也有一些奇怪