Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IronPython中的继承和循环引用_Python_Ironpython - Fatal编程技术网

IronPython中的继承和循环引用

IronPython中的继承和循环引用,python,ironpython,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

我有一个关于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()
我有一个错误:
我能以某种方式避免这个循环引用吗?

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

解决这个问题的常规方法是将两个类放在同一个文件中。Python没有在文件和类之间强制任何类型的链接,因此您可以在单个文件中拥有任意多的类,并且可以随意调用它们。(事实上,为文件指定与其包含的类完全相同的名称是不符合Pythonic的;除此之外,文件的大小写应该是带有下划线的,而类的大小写是CamelCase。)

但是,如果由于某种原因无法执行此操作,则可以通过在方法内部执行此操作来中断循环导入:

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

你们真的需要这些类在单独的文件中吗?是的,我不能修改文件结构。实际上,我的真实示例稍微复杂一点,我在一个非常简单的示例中用两个类在单独的文件中重现了这个错误。我正在寻找解决这类问题的方法,但还没有结果。任何帮助都将不胜感激。