如何在python中中断导入循环

2024-05-16 04:43:26 发布

您现在位置:Python中文网/ 问答频道 /正文

在这种情况下,有两个相关的大型python类,因此我将它们放在不同的文件中。假设课程是眼镜蛇和老鼠。

现在需要从眼镜蛇的方法调用Rat的方法,反之亦然。 为此,我需要在Rat.py和Rat.py中导入眼镜蛇

这将创建一个导入循环并给出一个错误。不能在眼镜蛇内部导入眼镜蛇。

如何解决这个问题??

眼镜蛇.py

import Rat
class Cobra():
    def check_prey(self, rat ):
        # Some logic 
        rat.foo()

大鼠肺动脉压:

import Cobra
class Rat():
    def check_predator(self, snake ):
        # some_logic ..
        snake.foo()

Tags: 方法pyimportselffoodefcheck情况
1条回答
网友
1楼 · 发布于 2024-05-16 04:43:26

如果在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()

或者也可以限制导入的范围

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()

如果不直接使用Rat和Cobra类名,那么根本不需要import语句:只要Rat或snake实例中存在属性和函数,python就不关心它们来自哪个类。

一般来说,没有万无一失的方法可以避免导入循环。你能做的最好的事情就是重构你的代码并做一些我上面提到的事情。

相关问题 更多 >