Python Decorator @Propery를 이용, Overwrite를 방지할 수 있다.
Property Decorator를 이용, 직접 할당을 제한하여 클래스 Attribute를 덮어쓰지 않도록 보호할 수 있다. 이는 실수로 모델이나 데이터를 Overwrite할 수 있는 가능성을 원천차단할 수 있다.
class SimpleMLModel:
def __init__(self):
self._trained = False
self._model_parameters = None
@property
def trained(self):
"""check if the model has been trained."""
return self._trained
@property
def model_parameters(self):
"""get the model parameters for the trained model."""
if self.trained:
return self._model_parameters
else:
raise ValueError("Model has not been trained. Parameters are not available.")
def fit(self, features, targets):
"""train the machine learning model."""
self._model_parameters = self._train_model(features, targets)
self._trained = True
def _train_model(self, features, targets):
# implement model training algorithm
# return the model parameters
pass