【发布时间】:2017-03-21 17:59:07
【问题描述】:
我有两个文件,一个声明一个超类,其中涉及一个涉及子类的方法,另一个定义子类。
文件1:
from file2 import subclass
class superclass:
def __init__(self):
"Stuff"
def method(self):
temp = subclass()
"Stuff"
文件2:
from file1 import superclass
class subclass(superclass):
def __init__(self):
"Stuff"
当我运行 file1 的代码时,我在 file2 中收到一个错误,即未定义超类。这是因为我在定义超类之前导入了 file2。
但是,如果我在定义超类之后导入 file2,我会在 file1 中收到一个错误,指出未定义子类。这是因为我在方法中使用了子类实例。
解决这个问题的一个方法是在一个文件中同时声明超类和子类,但我想知道是否有办法让它们在不同的文件中声明。
【问题讨论】:
-
你不能有这样的循环导入。您不能将 file1 导入 file1,而 file2 导入 file1。为什么file2必须导入file1?
-
@Bryan Oakley 在声明子类之前子类不需要定义超类吗?
-
是的,确实如此。定义子类之前必须先定义超类
-
这就是为什么,据我所知,虽然也许还有另一种可能性,因此我问这个问题,file2 必须首先导入 file1。
-
超类将子类的实例作为其数据的一部分是非常不寻常的。设计对象层次结构可能有更好的方法。这就像说狗是哺乳动物,哺乳动物定义的一部分是它有一只狗。也许如果你能解释为什么你需要这种不寻常的结构,我们就可以解决你面临的真正问题,而不是为你的解决方法找到解决方法。
标签: python class import subclass