@@ -924,24 +924,23 @@ def __init__(self, raw_settings, hyperparameter_search_params):
924924 self ._hyperparameters_registry = dict ()
925925
926926 def __setattr__ (self , key , value ):
927- if key in { "_hyperparameters_registry" , "_hyperparameter_search_params" } or key in { "enabled" , "strategy" } :
928- # attributes and properties of the PredictionAlgorithmSettings object must be handled separately
927+ if not hasattr ( self , key ) :
928+ # call from __init__
929929 super (PredictionAlgorithmSettings , self ).__setattr__ (key , value )
930- elif key in self ._hyperparameters_registry or (key == "lambda_" and "lambda" in self ._hyperparameters_registry ):
931- if isinstance (value , HyperparameterSettings ):
932- # call from a PredictionAlgorithmSettings child's __init__
933- super (PredictionAlgorithmSettings , self ).__setattr__ (key , value )
930+ elif key in self ._hyperparameters_registry :
931+ # syntactic sugars
932+ target = self ._hyperparameters_registry [key ]
933+ if isinstance (target , (SingleValueHyperparameterSettings , SingleCategoryHyperparameterSettings )):
934+ target .set_value (value )
935+ elif isinstance (target , CategoricalHyperparameterSettings ):
936+ target .set_values (value )
934937 else :
935- # syntactic sugars
936- target = self ._hyperparameters_registry [key ]
937- if isinstance (target , (SingleValueHyperparameterSettings , SingleCategoryHyperparameterSettings )):
938- target .set_value (value )
939- elif isinstance (target , CategoricalHyperparameterSettings ):
940- target .set_values (value )
941- else :
942- raise Exception ("Invalid type for assignment of a NumericalHyperparameterSettings object" )
938+ raise Exception ("Invalid assignment of a NumericalHyperparameterSettings object" )
939+ elif key == "lambda_" :
940+ raise Exception ("Invalid assignment of a NumericalHyperparameterSettings object" )
943941 else :
944- raise Exception ("Unknown hyperparameter: \" {}\" " .format (key ))
942+ # other cases (properties setter, new attribute...)
943+ super (PredictionAlgorithmSettings , self ).__setattr__ (key , value )
945944
946945 def _register_numerical_hyperparameter (self , name ):
947946 self ._hyperparameters_registry [name ] = NumericalHyperparameterSettings (name , self )
0 commit comments