在多线程实现中,我需要生成大量指令,然后将它们传递给单个处理线程。这是我的自定义指令类:
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
我将不得不调用不同类型的指令,因此定义的参数可能不同。它总是缺少一个参数,比如没有目标,没有动作等等。
与当前的构造函数一样,如果我在没有目标的情况下调用它,我会得到它:
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)
但是,还有其他方法吗? 如果是这样,你能详细说明一下吗?谢谢!
很抱歉,如果我误用或拼写错误的单词,英语不是我的母语。
答案 0 :(得分:6)
您的函数定义中的所有参数都是可选的,因为它们被指定为默认参数,因此您不会让传递所有值。
调用该函数时,只需 name 你做要传入的参数;这些被称为关键字参数:
instruction(priority=priority_value, action=action_value,
data=data_value, condition=condition_value)
在通话中使用关键字参数时,顺序无关紧要,您可以自由混合。
另请参阅Python教程的Keyword Arguments section。
答案 1 :(得分:1)
传递关键字参数。
i = instruction(priority=priority_value,
action=action_value,
data=data_value,
condition=condition_value)