IronPython中的继承和循环引用

时间:2017-07-25 12:24:53

标签: python ironpython

我对IronPython中的循环引用有疑问。让我们说我有班级等级。在一个文件中,我有父类:

from Child import Child

class Parent(object):
    def getChild(self):
        return Child()

在另一个文件中,我有孩子班:

from Parent import Parent

class Child(Parent):
    def doSomething(self):
        return 0

我在这里有一些循环引用。所以,当我尝试执行这样的代码时:

from Parent import *

parent = Parent()
child = parent.getChild()

我收到了错误消息: 我能以某种方式避免这种循环引用吗?

1 个答案:

答案 0 :(得分:0)

正如您所说,您有一个循环导入问题。

解决这个问题的正常方法是简单地将两个类放在同一个文件中。 Python不强制文件和类之间的任何类型的链接,因此您可以在单个文件中拥有任意数量的类,并且可以随意调用它们。 (实际上,为文件提供与其包含的类完全相同的名称是 un -Pythonic;除了其他任何内容之外,文件应该具有lower_case_with_underscore名称,而类是CamelCase。)

但是,如果由于某种原因你无法做到这一点,你可以通过在方法中执行来打破循环导入:

class Parent(object):
    def getChild(self):
        from child import Child
        return Child()