BaseService没有注入db,在其子类中加上@inject是否就相当于子类注入了db?

BaseService没有注入db,在其子类中加上@inject是否就相当于子类注入了db?

BaseService:
class BaseService:
    """基础服务,完善数据库的基础增删改查功能,简化代码"""
    db: SQLAlchemy

    def create(self, model: Any, **kwargs) -> Any:
        """根据传递的模型类+键值对信息创建数据库记录"""
        with self.db.auto_commit():
            model_instance = model(**kwargs)
            self.db.session.add(model_instance)
        return model_instance

其子类如下:

@inject
@dataclass
class ApiToolService(BaseService):
    """自定义API插件服务"""
    db: SQLAlchemy

    def update_api_tool_provider(self, provider_id: UUID, req: UpdateApiToolProviderReq):
        """根据传递的provider_id+req更新对应的API工具提供者信息"""

子类中加入了@inject是否就相当于在子类中实例化了db?

还是说是在app启动的时候实例化了db?因为app.py中看到了这些代码:

# 将env加载到环境变量中
dotenv.load_dotenv()

conf = Config()

injector = Injector([ExtensionModule])

app = Http(
    __name__,
    conf=conf,
    db=injector.get(SQLAlchemy),
    migrate=injector.get(Migrate),
    router=injector.get(Router),
)

if __name__ == '__main__':
    app.run(debug=True)


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
泽辉呀 2026-04-02 09:45:31

是的,在程序实例化的时候,db就跟着一起实例化了,只是在需要使用的时候使用inject注入了而已(一开始实例化后存起来,需要使用传递过去)

  • 提问者 慕雪7494860 #1
    @inject
    @dataclass
    class ApiToolService(BaseService):
        """自定义API插件服务"""
        db: SQLAlchemy

    老师,这个ApiToolService上面的@inject的一个功能是不是就是可以把这个db注入进来?另一个功能是不是把这个ApiToolService自身实例化,然后就可以交给handler注入了?

    6天前
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
AI Agent 全栈开发工程师
  • 参与学习       669    人
  • 解答问题       474    个

全流程打造你自己的(Coze/Dify)低代码智能体开发平台;2025年入行正当时,企业急需,人才稀缺,竞争小;无论入行还是转行,首选口碑好课,门槛低、成长高

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师