constructor - How to handle missing args in python __init__? -


in multi-threaded implementation, need generate lots of instructions, pass them single processing thread. here custom instruction class:

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 have call different kinds of instructions, defined parameters may differ. 1 parameter missing, no target, no action, etc.

as current constructor, if call without target, i'll that:

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 see here, move along! 

i know can define custom constructors, like

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

and call i=instruction.notarget(priority_value,action_value,data_value,condition_value)

but, there other ways that?
if so, please detail these? thanks!

sorry if mis-used or mis-spelled words, english isn't native language.

all parameters in function definition optional specified default parameters, don't have pass in values all.

when calling function, name arguments do want pass in; these called keyword arguments:

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

when using keyword arguments in call, order doesn't matter, can mix them freely.

also see keyword arguments section of python tutorial.


Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

Python ctypes access violation with const pointer arguments -