Skip to main content
 首页 » 编程设计

python之如何处理 python __init__ 中丢失的参数

2025年05月04日12lexus

在多线程实现中,我需要生成大量指令,然后将它们传递给单个处理线程。这是我的自定义 Instruction 类:

class instruction: 
    priority = 10 
    action = "" 
    data = "" 
    condition = "" 
    target = "" 
 
    ### constructor(s) declaration 
    def __init__(self,priority=10,target="",action="",data="",condition=""): 
        self.priority = priority 
        self.target = target 
        self.action = action 
        self.data = data 
        self.condition = condition 

我将不得不调用不同种类的指令,因此定义的参数可能会有所不同。总会少一个参数,比如没有目标,没有 Action 等。

与当前的构造函数一样,如果我在没有目标的情况下调用它,我会得到:

i = instruction(priority_value,action_value,data_value,condition_value) 
print(i.priority) 
>>> priority_value 
print(i.target) 
>>> action_value 
print(i.action) 
>>> data_value 
print(i.target) 
>>> data_value 
print(i.data) 
>>> condition_value 
print(i.condition) 
>>> #nothing to see here, move along! 

我知道我可以定义自定义构造函数,比如

@classmethod 
def noTarget(priority=10,action=0,data="",condition=""): 
return instruction(priority,"",action,data,condition) 

然后将其称为i=instruction.noTarget(priority_value,action_value,data_value,condition_value)

但是,还有其他方法吗?
如果是这样,你能详细说明这些吗?谢谢!

如果我用错或拼错了一些单词,抱歉,英语不是我的母语。

请您参考如下方法:

函数定义中的所有参数都是可选的,因为它们被指定为默认参数,因此您不必为所有参数传递值。

调用函数时,只需命名您想要传入的参数;这些称为关键字参数:

instruction(priority=priority_value, action=action_value, 
            data=data_value, condition=condition_value) 

在调用中使用关键字参数时,顺序无关紧要,您可以随意混合使用它们。

另见 Keyword Arguments section Python 教程。