有一种情况是,有两个相关的大型python类,因此我将它们放在单独的文件中。假设课程是眼镜蛇和老鼠。
现在需要从眼镜蛇的方法调用老鼠的方法,反之亦然。为此,我需要在Rat.py中导入眼镜蛇,在Cobra.py中导入大鼠。
这将创建一个导入循环并给出一个错误。不能进口眼镜蛇内眼镜蛇。
怎么解决这个??
Cobra.py
import Rat
class Cobra():
def check_prey(self, rat ):
# Some logic
rat.foo()Rat.py
import Cobra
class Rat():
def check_predator(self, snake ):
# some_logic ..
snake.foo()发布于 2011-08-26 02:46:28
如果您不在Rat的类定义中使用Rat,或者反之亦然(即仅在方法内部使用),那么您实际上可以将导入语句移到文件的底部,到那时类定义就已经存在了。
# Cobra.py
class Cobra:
# ...
def check_prey(self, rat):
# some logic
rat.foo()
import Rat# Rat.py
import Cobra
class Rat:
# ...
def check_predator(self, snake):
# some_logic ..
snake.foo()或者可以限制导入的范围:
# Cobra.py
class Cobra:
# ...
def check_prey(self, rat):
import Rat
# some logic
rat.foo()# Rat.py
import Cobra
class Rat:
# ...
def check_predator(self, snake):
# some_logic ..
snake.foo()如果您不直接使用Rat和Cobra类名,那么您甚至根本不需要导入语句:只要属性和函数存在于rat或snake实例中,Python就不关心它们来自哪个类。
通常,没有万无一失的方法来避免import循环。你能做的最好的就是重构你的代码,并做上面提到的一些事情。
https://stackoverflow.com/questions/7199466
复制相似问题