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

如何将Python函数的多可选参数转换为类传入?

用类封装多可选参数的实现方案

1. 定义参数类(推荐用dataclasses)

Python的dataclasses模块可以快速生成用于存储数据的类,自动帮你处理初始化、属性赋值等逻辑,刚好适配你的场景:

from dataclasses import dataclass
from typing import Optional

@dataclass
class FunctionParams:
    arg1: Optional[int] = 0
    arg2: Optional[int] = 0
    arg3: Optional[int] = 0
    arg4: Optional[int] = 0
    arg5: Optional[int] = 0
    arg6: Optional[str] = None
    arg7: Optional[str] = None
    arg8: Optional[str] = None
    arg9: Optional[str] = None
    arg10: Optional[str] = None

2. 修改原函数接收类实例

把原来的多参数函数改成只接收这个类的实例,内部通过实例属性访问参数:

def function(params: FunctionParams):
    # 示例:访问参数
    print(params.arg1, params.arg6)
    # 原函数逻辑...
    pass

3. 调用方式(仅传相关参数)

创建FunctionParams实例时,只需要传入你当前需要的参数,剩下的会自动使用默认值:

# 示例1:只传arg3和arg7
params1 = FunctionParams(arg3=5, arg7="test")
function(params1)

# 示例2:传多个参数
params2 = FunctionParams(arg1=10, arg5=20, arg10="finish")
function(params2)

备选方案:手动写普通类

如果不想用dataclasses,也可以自己实现类的初始化方法,效果一致:

from typing import Optional

class FunctionParams:
    def __init__(self,
                 arg1: Optional[int] = 0,
                 arg2: Optional[int] = 0,
                 arg3: Optional[int] = 0,
                 arg4: Optional[int] = 0,
                 arg5: Optional[int] = 0,
                 arg6: Optional[str] = None,
                 arg7: Optional[str] = None,
                 arg8: Optional[str] = None,
                 arg9: Optional[str] = None,
                 arg10: Optional[str] = None):
        self.arg1 = arg1
        self.arg2 = arg2
        self.arg3 = arg3
        self.arg4 = arg4
        self.arg5 = arg5
        self.arg6 = arg6
        self.arg7 = arg7
        self.arg8 = arg8
        self.arg9 = arg9
        self.arg10 = arg10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:30:52