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

Python对象填充最佳实践:JSON转换逻辑应放__init__内还是外部?

JSON转换逻辑放置方案建议

方案2的设计合理性远高于方案1,符合软件工程的单一职责设计原则,原因如下:

  • 解耦业务类和数据源:League 类作为业务实体,只需要关心自身要承载的属性(id、name、country_code),不需要感知上层数据来自哪里,不管是API返回、数据库查询、本地CSV导入都可以通用构造方法创建实例,适配性更强。
  • 降低后续维护成本:如果后续API返回结构调整,方案1需要修改League类的核心初始化逻辑,很容易影响其他使用这个类的业务逻辑;方案2只需要调整外部转换逻辑,不会侵入类的核心实现。
  • 更便于单元测试:写单元测试构造League实例的时候,不需要按照API结构拼嵌套字典,直接传对应参数即可,测试代码更简洁。

只有当你能100%确认League类永远只会绑定这一个API数据源,不会有其他构造场景的极端情况下,方案1才能考虑使用,其余所有场景都优先选方案2。

如果担心转换逻辑散落在业务代码各处不好维护,可以加一个专用的类方法收拢转换逻辑,同时保留构造方法的通用性:

class League:
    def __init__(self, id, name, country_code):
        self.id = id
        self.name = name
        self.country_code = country_code

    @classmethod
    def from_api_raw(cls, raw_data):
        return cls(
            id=raw_data["league"]["id"],
            name=raw_data["league"]["name"],
            country_code=raw_data["country"]["code"]
        )

# 调用方式简洁,转换逻辑集中管理
leagues = [League.from_api_raw(d) for d in data["data"]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:54:03