gpt4 book ai didi

python - 多个类包装到一个 Main

转载 作者:行者123 更新时间:2023-12-01 09:24:46 25 4
gpt4 key购买 nike

我编写了一些单独的程序,需要将它们包装在一个程序中,而不是一个长代码文件中。有一个检测器和一个识别器,主程序负责拍摄图像,通过检测器,然后在将其传递给识别器之前进行一些图像操作。

我在同一位置有三个文件:ma​​in.pyprogram1.pyprogram2.py。这些程序还包含函数。

我想在 main 中使用这些 .py 文件,如下所示:

import program1, program2
import skimage.io
import numpy as np

image_path = "abc"
image = skimage.img_as_float(skimage.io.imread(image_path)).astype(np.float32)

# program 1 will load the image and detect objects in it, returning a pandas dataframe
detected = program1(image)

# For each object in dataframe, crop image and run recognizer
for index, row in df.iterrows():

object = image[ymin:ymax, xmin:xmax] #crop object from main image
object_det = program2(object) #pass cropped object to recognizer
print(object_det) # program2 will return a string

我的问题: 我应该为 Program1 和 Program2 创建类吗?或者我应该将它们创建为函数,然后导入它们?它们对外部库有多种依赖关系。

有人可以告诉我解决这个问题最有效和Pythonic的方法是什么吗?

最佳答案

当您在 main.py导入program1、program2时,您会在以下位置获得program1program2变量你的命名空间。这些是模块对象,其属性将是其他文件中定义的全局变量(包括在顶层定义的函数)。您不能直接调用模块对象,而这正是当前代码正在执行的操作。

所以而不是:

detected = program1(image)

你应该这样做:

detected = program1.some_function(image)

其中 some_function 是您在 program1 文件中定义的任何函数的名称。同样:

    object_det = program2(object) #pass cropped object to recognizer

应该是:

    object_det = program2.some_other_function(object) #pass cropped object to recognizer

是否应该使用类实际上是一个与导入工作无关的设计决策。如果一个简单的函数调用对于您的两个模块中的每一个如何处理您要发送的数据来说是一个合适的接口(interface),那么就没有必要仅仅为了风格而添加复杂的 OOP 结构。但是,如果您要做的事情比示例中显示的更复杂,那么编写一个或多个类可能是有意义的。但如果没有更多信息,我们无法给出更详细的建议。

关于python - 多个类包装到一个 Main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50523576/

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