gpt4 book ai didi

python - 如何在 python 中打破导入循环

转载 作者:IT老高 更新时间:2023-10-28 20:27:55 33 4
gpt4 key购买 nike

我有两个相关的大型 python 类,因此我将它们放在单独的文件中。假设类是 Cobra 和 Rat。

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

这会创建一个导入循环并给出错误。无法在 Cobra 中导入 Cobra。

如何解决这个问题??

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

最佳答案

如果您在 Rat 的类定义中不使用 Cobra 或反之亦然(即仅在方法内部使用),那么您实际上可以将 import 语句移动到文件的底部,此时类定义已经存在。

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

如果你不直接使用 RatCobra 类名,那么你甚至根本不需要 import 语句:只要属性和ratsnake 实例中存在函数,Python 不在乎它们来自哪个类。

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

关于python - 如何在 python 中打破导入循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7199466/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com