首页 > 解决方案 > 是否可以将类对象附加到“__all__”?

问题描述

Current Project Structure

---src
 |__controllers
 |  |__ prediction.py
 |   
 |__regression
    |__ __init__.py
    |__ deep_learning.py

deep_learning.py 包含一个我正在初始化模型的类。

目标

我的目标是在控制器目录中的 prediction.py 中使用 deep_learning 中的类对象。

__init__.py 的当前代码

我尝试在回归目录中的 __init__.py 中添加以下代码:
from deep_learning import predict
future_predict = predict()
__all__.append('future_predict')

这里的预测是包含在 deep_learning.py 中的类的名称。


预测的当前代码.py

from flask import Flask, render_template, request, send_from_directory

@app.route('/<filename>', methods=["POST"])
def predict(filename):
    print("something: ", future_predict)
    return send_from_directory(app.config['IMAGE_UPLOAD_PATH'], filename)
    

错误

future_predict但是,我在 prediction.py中使用对象并没有成功。错误:NameError: name 'future_predict' is not defined

标签: python

解决方案


有几个误解:

  • __all__是一种定义可导入内容的方法
  • 您仍然需要导入这些符号!
  • 你的包里__init__.py还需要一个controllers

通常,使用src顶级目录的 Python 项目具有如下结构:

❯ tree src/
src/
└── project
    ├── __init__.py
    ├── package_1
    │   └── __init__.py
    ├── package_2
    │   └── __init__.py
    └── package_3
        └── __init__.py

4 directories, 4 files

推荐阅读