<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_features_from(self, other):
 """Add features from other Dataset to the current Dataset. Both Datasets must be constructed before calling this method. Parameters other : Dataset The Dataset to take features from. Returns ------- self : Dataset Dataset with the new features added. """

        if self.handle is None or other.handle is None:
            raise ValueError('Both source and target Datasets must be constructed before adding features')
        _safe_call(_LIB.LGBM_DatasetAddFeaturesFrom(self.handle, other.handle))
        return self