You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为自定义信息查询功能创建独立类以优化Python代码

实现方法

步骤1:新建独立文件存放封装类

创建名为order_extractor.py的单独文件,放入以下代码:

import re

class OrderInfoExtractor:
    def __init__(self, db):
        # 初始化时传入全局数据库实例,降低耦合度
        self.db = db
    
    def parse(self, message_text: str) -> tuple[int, int]:
        """
        输入消息文本,返回 (订单ID, 用户Telegram ID)
        """
        # 提取订单ID
        order_id_part = message_text.split('\n')[0].split("№ ")[1]
        order_id = int(re.search(r'\d+', order_id_part).group(0))
        
        # 关联查询用户ID
        cl_id_part = str(self.db.get_user_id_admin(order_id))
        cl_id = int(re.search(r'\d+', cl_id_part).group(0))
        user_id_part = str(self.db.get_user_telegram_id_admin(cl_id))
        user_tg_id = int(re.search(r'\d+', user_id_part).group(0))
        
        return order_id, user_tg_id

步骤2:在原有业务代码中调用

首先在你原来的代码文件头部导入类:

from order_extractor import OrderInfoExtractor

在项目初始化阶段(和数据库实例初始化同位置)创建提取器全局实例,不用每次请求都重复创建:

# 项目启动时执行一次即可
order_extractor = OrderInfoExtractor(db=db)

修改原有回调函数,替换掉#----之间的代码:

@dp.callback_query_handler(text="accept_ord", state=None)
async def process_order_callback_4(query: types.CallbackQuery):
    answ_date_2 = query.data

    # 替换原有逻辑,仅需一行调用
    id_1, user_id_clear = order_extractor.parse(str(query.message.text))

    await bot.send_message(user_id_clear,
                           text=f'The status of the order has been change №{id_1} изменен!\n\nPlease check main menu (/start)')
    if answ_date_2 == "accept_ord":
        status = 2
        db.set_new_status(id_1, status)
        # 顺便修正原代码拼写错误:assepted → accepted
        await bot.send_message(query.from_user.id, text=f'The order №{id_1} has been accepted.', reply_markup=nav.back_admin_menu_order)

额外优化建议

  • 后续其他业务场景需要提取订单和用户ID时,直接调用order_extractor.parse方法即可,无需重复写逻辑
  • 如果后续订单号的匹配规则、数据库查询逻辑变动,仅需要修改OrderInfoExtractor类内部的代码,不需要改动所有业务层代码
  • 可根据需求在parse方法内添加异常捕获逻辑,比如消息文本无匹配订单号、数据库无对应数据时返回指定错误,方便排查问题

内容的提问来源于stack exchange,提问作者Ivan W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:06:04