python将json实例化为class文件 写入.py文件

python将json实例化为class文件 写入.py文件create_class.py

python 复制代码
import json


class Command:
    def handle(self, *args, **kwargs):
        json_file = kwargs['json_file']
        class_name = kwargs['class_name']
        output_file = kwargs['output_file']

        with open(json_file, 'r') as f:
            data = json.load(f)

        class_def = f"class {class_name}:\n"
        for key, value in data.items():
            if not isinstance(value, str):
                class_def += f"    {key} = {value}\n"
            else:
                class_def += f"    {key} = '{value}'\n"

        with open(output_file, 'w') as f:
            f.write(class_def)


if __name__ == "__main__":
    c = Command()
    c.handle(json_file='config.json', class_name="TestClass", output_file='test_01.py')

config.json

powershell 复制代码
{
    "name": "John Doe",
    "age": 31,
    "is_student": false,
    "courses": [
        "Math",
        "Physics",
        "Chemistry",
        "Biology"
    ]
}

运行后即可得到

文件 test_01.py

python 复制代码
class TestClass:
    name = 'John Doe'
    age = 31
    is_student = False
    courses = ['Math', 'Physics', 'Chemistry', 'Biology']

还可以定义模版文件,然后直接写成.py文件

文件:config4_bx.py

python 复制代码
import json

# JSON 数据字符串
json_data = '''
{
    "name": "John Doe",
    "age": 30,
    "is_student": false,
    "courses": ["Math", "Physics", "Chemistry"]
}
'''

# 解析 JSON 数据
data = json.loads(json_data)

# 定义类名
class_name = "Person"
func_name = "BYD_A88"


def func1():
    print('111')


# 生成类定义的模板
class_template = f"""
from src.common.config4_bx import func1

class {class_name}:
    def __init__(self):
{"".join(f'        self.{k} = "{v}"\n' if isinstance(v, str) else f'        self.{k} = {v}\n' for k, v in data.items())}

    def __str__(self):
        return f"{class_name}(name={data.get('name')}, age={data.get('age')}, is_student={data.get('is_student')}, courses={data.get('courses')})"
        
    def test_{func_name}_smoke(self):
        func1()
"""

# 写入 Python 文件
with open('test_person.py', 'w') as file:
    file.write(class_template)

# 输出生成的类定义
print(class_template)
相关推荐
冷雨夜中漫步7 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴8 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再8 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
m0_736919109 小时前
C++代码风格检查工具
开发语言·c++·算法
喵手9 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_9449347310 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy10 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
黎雁·泠崖10 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
2301_7634724611 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
肖永威11 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos