我有一个情况,有两个相关的大型python类,因此我把它们放在单独的文件中.让我们说课程是Cobra和Rat.
现在需要从Cobra的方法调用Rat的方法,反之亦然.为此,我需要在Cobra.py中输入Rat.py和Rat中的Cobra
这会创建一个导入循环并产生错误.不能在眼镜蛇内部进口眼镜蛇.
怎么解决这个?
Cobra.py:
import Rat
class Cobra():
def check_prey(self, rat ):
# Some logic
rat.foo()
Run Code Online (Sandbox Code Playgroud)
Rat.py:
import Cobra
class Rat():
def check_predator(self, snake ):
# some_logic ..
snake.foo()
Run Code Online (Sandbox Code Playgroud)
Cha*_* Ma 32
如果您不在Rat的类定义中使用Cobra,反之亦然,即仅在内部方法中使用,那么您实际上可以将import语句移动到文件的底部,此时类定义已经存在.
Class Cobra:
...
def check_prey(self, rat ):
Some logic rat.foo()
import Rat
import Cobra
class Rat
...
def check_predator(self, snake ):
some_logic ..
snake.foo()
Run Code Online (Sandbox Code Playgroud)
或者您也可以限制导入的范围
Class Cobra:
...
def check_prey(self, rat ):
import Rat
Some logic rat.foo()
import Cobra
class Rat
...
def check_predator(self, snake ):
some_logic ..
snake.foo()
Run Code Online (Sandbox Code Playgroud)
如果你不直接使用Rat和Cobra类名,那么你甚至根本不需要import语句,只要rat或stake实例中存在属性和函数,python不关心它们是什么类来自.
一般来说,没有完全证明避免导入循环的方法,你可以做的最好是重构你的代码并做一些我上面提到的事情.
| 归档时间: |
|
| 查看次数: |
26725 次 |
| 最近记录: |