Skip to main content
 首页 » 编程设计

python之如何通过继承在两个不同的类中拆分函数初学者

2025年05月04日13shangdawei

我有一个如下所示的 json。我下面也有程序。需要把程序分成两个类。先在first class获取请求,然后在second class进行操作。基本上如何将我的函数转换为 两个 单独的类,其中 on 类是通用的,其他类执行操作

Postman 接受 json POST 请求如下 http://127.0.0.1:5000/out

{ 
    "filters": [{ 
        "id": 1, 
        "name": "pool", 
        "type": "str", 
        "date": ["2019-12-01", "2019-12-03"] 
    }] 
} 

Flask 代码如下

from flask import Flask 
app = Flask(__name__) 
@app.route('/out/', methods=[ 'POST'])    
def values_extract(): 
    json_request = request.get_json() 
    start_date = '' 
    end_date = '' 
    data = json.loads(json.dumps(json_request)) 
 
   #if valid json then do the below program in separate `**class**` 
 
    for i in data['filters']: 
    if i['type'] == 'pool': 
       start_date =  i['date'][0] 
       end_date = i['date'][1] 
    return  (start_date, end_date) 
 
if __name__ == "__main__": 
    app.run() 

我的 flask 可以完美运行上述功能

我的类伪代码

class jsonrequest(): 
        def getrequest(self,json_request,data): 
                self.json_request = request.get_json() 
                self.data = json.loads(json.dumps(json_request)) 
                start_date = '' 
                end_date = '' 
 
class valuesextract(jsonrequest): 
        def filtervalues(self,json_request,data):     
            for i in data['filters']: 
                if i['type'] == 'pool': 
                        start_date =  i['date'][0] 
                        end_date = i['date'][1] 
                return  (start_date, end_date) 

请您参考如下方法:

在进入解决方案之前。您需要问自己为什么需要上课?无需为您的用例保留状态。即使你使用类,到处都是@staticmethod。

一个直接的重构想法是分离数据 ser/deser 逻辑和业务逻辑。针对您的情况

import json 
 
from flask import Flask, request 
 
app = Flask(__name__) 
 
 
def select_dates(data): 
    start_date = '' 
    end_date = '' 
    for i in data['filters']: 
        if i['type'] == 'pool': 
            start_date = i['date'][0] 
            end_date = i['date'][1] 
    return [start_date, end_date] 
 
 
@app.route('/out', methods=['POST']) 
def values_extract(): 
    data = request.json 
    # if valid json then do the below program in separate `**class**` 
    return json.dumps(select_dates(data)) 
 
 
if __name__ == "__main__": 
    app.run() 
 

还删除了不必要的 json 加载/转储调用。

HTTP 天生就是无状态的,您会发现很少有需要类的用例。尽可能多地使用函数。