def __init__(self, name="", desc="", machine=-1, input=-1, init_dict=None): """Constructor of the class. Can be use in two ways : - __init__ (arg1 = 1, arg3 = 5) every parameters have name and default values for Matrix, None will initialise the property with an empty Matrix for pyleecan type, None will call the default constructor - __init__ (init_dict = d) d must be a dictionnary wiht every properties as keys ndarray or list can be given for Vector and Matrix object or dict can be given for pyleecan Object""" if machine == -1: machine = Machine() if input == -1: input = Input() if init_dict is not None: # Initialisation by dict check_init_dict(init_dict, ["name", "desc", "machine", "input"]) # Overwrite default value with init_dict content if "name" in list(init_dict.keys()): name = init_dict["name"] if "desc" in list(init_dict.keys()): desc = init_dict["desc"] if "machine" in list(init_dict.keys()): machine = init_dict["machine"] if "input" in list(init_dict.keys()): input = init_dict["input"] # Initialisation by argument self.parent = None self.name = name self.desc = desc # machine can be None, a Machine object or a dict if isinstance(machine, dict): # Call the correct constructor according to the dict load_dict = { "MachineSync": MachineSync, "MachineAsync": MachineAsync, "MachineSCIM": MachineSCIM, "MachineDFIM": MachineDFIM, "MachineSIPMSM": MachineSIPMSM, "MachineIPMSM": MachineIPMSM, "MachineWRSM": MachineWRSM, "MachineSyRM": MachineSyRM, "Machine": Machine, } obj_class = machine.get("__class__") if obj_class is None: self.machine = Machine(init_dict=machine) elif obj_class in list(load_dict.keys()): self.machine = load_dict[obj_class](init_dict=machine) else: # Avoid generation error or wrong modification in json raise InitUnKnowClassError( "Unknow class name in init_dict for machine") else: self.machine = machine # input can be None, a Input object or a dict if isinstance(input, dict): # Call the correct constructor according to the dict load_dict = {"InCurrent": InCurrent, "Input": Input} obj_class = input.get("__class__") if obj_class is None: self.input = Input(init_dict=input) elif obj_class in list(load_dict.keys()): self.input = load_dict[obj_class](init_dict=input) else: # Avoid generation error or wrong modification in json raise InitUnKnowClassError( "Unknow class name in init_dict for input") else: self.input = input # The class is frozen, for now it's impossible to add new properties self._freeze()
def __init__(self, name="", desc="", machine=-1, input=-1, init_dict=None): """Constructor of the class. Can be use in two ways : - __init__ (arg1 = 1, arg3 = 5) every parameters have name and default values for Matrix, None will initialise the property with an empty Matrix for pyleecan type, None will call the default constructor - __init__ (init_dict = d) d must be a dictionnary wiht every properties as keys ndarray or list can be given for Vector and Matrix object or dict can be given for pyleecan Object""" if machine == -1: machine = Machine() if input == -1: input = Input() if init_dict is not None: # Initialisation by dict check_init_dict(init_dict, ["name", "desc", "machine", "input"]) # Overwrite default value with init_dict content if "name" in list(init_dict.keys()): name = init_dict["name"] if "desc" in list(init_dict.keys()): desc = init_dict["desc"] if "machine" in list(init_dict.keys()): machine = init_dict["machine"] if "input" in list(init_dict.keys()): input = init_dict["input"] # Initialisation by argument self.parent = None self.name = name self.desc = desc # machine can be None, a Machine object or a dict if isinstance(machine, dict): # Check that the type is correct (including daughter) class_name = machine.get("__class__") if class_name not in [ "Machine", "MachineAsync", "MachineDFIM", "MachineIPMSM", "MachineSCIM", "MachineSIPMSM", "MachineSRM", "MachineSyRM", "MachineSync", "MachineWRSM", ]: raise InitUnKnowClassError( "Unknow class name " + class_name + " in init_dict for machine" ) # Dynamic import to call the correct constructor module = __import__("pyleecan.Classes." + class_name, fromlist=[class_name]) class_obj = getattr(module, class_name) self.machine = class_obj(init_dict=machine) else: self.machine = machine # input can be None, a Input object or a dict if isinstance(input, dict): # Check that the type is correct (including daughter) class_name = input.get("__class__") if class_name not in ["Input", "InCurrent", "InFlux", "InForce"]: raise InitUnKnowClassError( "Unknow class name " + class_name + " in init_dict for input" ) # Dynamic import to call the correct constructor module = __import__("pyleecan.Classes." + class_name, fromlist=[class_name]) class_obj = getattr(module, class_name) self.input = class_obj(init_dict=input) else: self.input = input # The class is frozen, for now it's impossible to add new properties self._freeze()