Commit 4a9c6e0d authored by wxchan's avatar wxchan Committed by Guolin Ke
Browse files

[python] add try/except in __del__ (#1095)

* add try/except to __del__

* specify AttributeError
parent 9b07e869
...@@ -346,8 +346,11 @@ class _InnerPredictor(object): ...@@ -346,8 +346,11 @@ class _InnerPredictor(object):
self.pred_parameter = param_dict_to_str(pred_parameter) self.pred_parameter = param_dict_to_str(pred_parameter)
def __del__(self): def __del__(self):
try:
if self.__is_manage_handle: if self.__is_manage_handle:
_safe_call(_LIB.LGBM_BoosterFree(self.handle)) _safe_call(_LIB.LGBM_BoosterFree(self.handle))
except AttributeError:
pass
def __getstate__(self): def __getstate__(self):
this = self.__dict__.copy() this = self.__dict__.copy()
...@@ -609,7 +612,10 @@ class Dataset(object): ...@@ -609,7 +612,10 @@ class Dataset(object):
self.params_back_up = None self.params_back_up = None
def __del__(self): def __del__(self):
try:
self._free_handle() self._free_handle()
except AttributeError:
pass
def _free_handle(self): def _free_handle(self):
if self.handle is not None: if self.handle is not None:
...@@ -1339,10 +1345,16 @@ class Booster(object): ...@@ -1339,10 +1345,16 @@ class Booster(object):
raise TypeError('Need at least one training dataset or model file to create booster instance') raise TypeError('Need at least one training dataset or model file to create booster instance')
def __del__(self): def __del__(self):
try:
if self.network: if self.network:
self.free_network() self.free_network()
except AttributeError:
pass
try:
if self.handle is not None: if self.handle is not None:
_safe_call(_LIB.LGBM_BoosterFree(self.handle)) _safe_call(_LIB.LGBM_BoosterFree(self.handle))
except AttributeError:
pass
def __copy__(self): def __copy__(self):
return self.__deepcopy__(None) return self.__deepcopy__(None)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment