是否可以将Class对象附加到“ __all__”?

时间:2020-09-04 07:43:06

标签: python

Current Project Structure

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

deep_learning.py包含一个用于初始化模型的类。

目标

我的目标是在controller目录中的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)
    

错误

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

1 个答案:

答案 0 :(得分:2)

有几个误解:

  • __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