python - 将价值从一个模块的类带到另一个
问题描述
我是 python 的初学者,我想问,我有 2 个模块,我想从一个模块获取值。我想获取“ids”值并在另一个模块中使用它在屏幕上打印我试图从导入中调用它但它不起作用,我迷路了
类坐标生成器:KEY_RESET = ord("r") KEY_QUIT = ord("q")
def __init__(self, image, output, color):
self.output = output
self.caption = image
self.color = color
self.image = open_cv.imread(image).copy()
self.click_count = 0
self.ids = 0
self.coordinates = []
open_cv.namedWindow(self.caption, open_cv.WINDOW_GUI_EXPANDED)
open_cv.setMouseCallback(self.caption, self.__mouse_callback)
def generate(self):
while True:
open_cv.imshow(self.caption, self.image)
key = open_cv.waitKey(0)
if key == CoordinatesGenerator.KEY_RESET:
self.image = self.image.copy()
elif key == CoordinatesGenerator.KEY_QUIT:
break
open_cv.destroyWindow(self.caption)
def __mouse_callback(self, event, x, y, flags, params):
if event == open_cv.EVENT_LBUTTONDOWN:
self.coordinates.append((x, y))
self.click_count += 1
if self.click_count >= 4:
self.__handle_done()
elif self.click_count > 1:
self.__handle_click_progress()
open_cv.imshow(self.caption, self.image)
def __handle_click_progress(self):
open_cv.line(self.image, self.coordinates[-2], self.coordinates[-1], (255, 0, 0), 1)
def __handle_done(self):
open_cv.line(self.image,
self.coordinates[2],
self.coordinates[3],
self.color,
1)
open_cv.line(self.image,
self.coordinates[3],
self.coordinates[0],
self.color,
1)
self.click_count = 0
coordinates = np.array(self.coordinates)
self.output.write("-\n id: " + str(self.ids) + "\n coordinates: [" +
"[" + str(self.coordinates[0][0]) + "," + str(self.coordinates[0][1]) + "]," +
"[" + str(self.coordinates[1][0]) + "," + str(self.coordinates[1][1]) + "]," +
"[" + str(self.coordinates[2][0]) + "," + str(self.coordinates[2][1]) + "]," +
"[" + str(self.coordinates[3][0]) + "," + str(self.coordinates[3][1]) + "]]\n")
draw_contours(self.image, coordinates, str(self.ids + 1), COLOR_WHITE)
for i in range(0, 4):
self.coordinates.pop()
self.ids += 1
解决方案
将您的代码放在名为 myclasses.py 的 (python) 文件中,并在同一目录中创建另一个文件,您将从该文件中导入 (myclasses.py) 模块,如下所示:
from myclasses import CoordinatesGenerator
不要忘记添加一个名为__init__.py
该文件夹的文件,以便 Python 将其视为一个目录。否则您的导入将失败!
结论:您尝试导入模块的每个文件夹都需要一个__init__.py
文件。因此,在上面的示例中,您将拥有一个包含 3 个文件的文件夹
推荐阅读
- python - 如何拉出嵌套文档
- adfs3.0 - ADFS 自定义声明返回过滤的组成员身份?
- python - 使用 smtp 发送电子邮件(需要帮助)
- java - 如何在java中逆时针旋转这个数组?
- javascript - undefined 不是对象(this.props.navigation.getParam)
- node.js - 来自后端的 HTML 表单值
- linux - Python 2.7 - 仅替换整个命令行的一部分的优化方法
- java - 我如何像 Mockito 一样实现它?
- javascript - 锚标记属性
- twilio - Twilio API 用于平均处理时间、参加的呼叫数、CSAT 等