gpt4 book ai didi

Python,将一个模块拆分成几个文件

转载 作者:太空宇宙 更新时间:2023-11-04 05:38:25 25 4
gpt4 key购买 nike

我有一个模块可以描述为 python

class Symbol():
def __init__(data):
self.data = data
pass
def __add__(self,other):
return Add(self,other)

class Integer(Symbol):
pass

class Add(Symbol):
def __init__(a,b):
self.data = [a,b]

我想拆分成三个文件,分别是symbol.py、integer.py和add.py;当然会有更多关于这些类的详细信息,因此将它们放在一个文件中是荒谬的。

由于某种原因,导入似乎永远不会起作用,虽然它甚至没有提示循环依赖,有人能给我举个例子吗?

最佳答案

您的循环依赖情况并非无法解决,因为 Symbol 在定义时不依赖于 Add,仅当 __add__ 方法时叫做。有两种解决它的好方法。

首先是不要让模块 Symbol 位于顶层的 import Add 中,而只在 __add__ 方法本身中执行此操作.例如,如果您的模块以类命名(仅小写),您将在 symbol.py 中使用它:

class Symbol():
# ...

def __add__(self,other):
from add import Add
return Add(self,other)

另一种方法是将 Add 全局导入到 symbol 模块中,但是在 Symbol< 的定义之后这样做类。这样,当 add 模块将 symbol 导入回来时,它将始终能够看到 Symbol 类的定义,即使模块未完成加载。

class Symbol():
# same as in your current code

from add import Add

如果您使用第二种方法并且 Symbol 类在文件顶部导入其他内容(通常放置 import 语句),您可能想要在该空间中添加有关稍后导入的 Add 的评论(以及原因)。

关于Python,将一个模块拆分成几个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34844977/

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