@@ -949,10 +949,12 @@ def __setattr__(self, attr_name, value):
949949 else :
950950 if attr_name in self ._attr_to_json_remapping :
951951 # attribute name and json key mismatch (e.g. "lambda", "alphaMode")
952- attr_name = self ._attr_to_json_remapping [attr_name ]
953- if attr_name in self ._hyperparameters_registry :
952+ json_key = self ._attr_to_json_remapping [attr_name ]
953+ else :
954+ json_key = attr_name
955+ if json_key in self ._hyperparameters_registry :
954956 # syntactic sugars
955- target = self ._hyperparameters_registry [attr_name ]
957+ target = self ._hyperparameters_registry [json_key ]
956958 if isinstance (target , (SingleValueHyperparameterSettings , SingleCategoryHyperparameterSettings )):
957959 target .set_value (value )
958960 elif isinstance (target , CategoricalHyperparameterSettings ):
@@ -962,9 +964,9 @@ def __setattr__(self, attr_name, value):
962964 else :
963965 # simple parameter
964966 assert isinstance (value , type (target )), "Invalid type {} for parameter {}: expected {}" .format (type (value ), attr_name , type (target ))
965- super (PredictionAlgorithmSettings , self ).__setattr__ (attr_name , value )
966- self [attr_name ] = value
967- self ._hyperparameters_registry [attr_name ] = value
967+ super (PredictionAlgorithmSettings , self ).__setattr__ (attr_name , value ) # update attribute value
968+ self [json_key ] = value # update underlying dict value for key json_key
969+ self ._hyperparameters_registry [json_key ] = value
968970 else :
969971 # other cases (properties setter, new attribute...)
970972 super (PredictionAlgorithmSettings , self ).__setattr__ (attr_name , value )
@@ -993,7 +995,8 @@ def _register_single_value_hyperparameter(self, json_key, accepted_types=None, a
993995 self ._hyperparameters_registry [json_key ] = SingleValueHyperparameterSettings (json_key , self , accepted_types = accepted_types )
994996 return self ._hyperparameters_registry [json_key ]
995997
996- def _register_simple_parameter (self , json_key ):
998+ def _register_simple_parameter (self , json_key , attr_name = None ):
999+ self ._maybe_register_attr_json_mismatch (json_key , attr_name )
9971000 self ._hyperparameters_registry [json_key ] = self [json_key ]
9981001 return self ._hyperparameters_registry [json_key ]
9991002
0 commit comments