Я создаю класс, который будет коллекцией других классов, собранных вместе, когда он будет инициирован.
Прямо сейчас, функция <strong>init</strong>
для моего класса выглядит следующим образом:
class RandomForest():
def __init__(self, n_estimators=10, min_leaf=5, sample_size = 2/3, min_impurity=1e-5):
self.n_estimators = n_estimators
self.tree = None
self.min_leaf = min_leaf
self.sample_size = sample_size
self.min_impurity = min_impurity
self.trees = [self.tree(min_leaf=self.min_leaf, impurity_threshold=self.min_impurity) for i in range(n_estimators)]
Идея состоит в том, что будут два подкласса класса RandomForest
, которые будут использовать разные классы для атрибута self.tree
, и это то, что я хотел бы изменить при инициации для каждого из них.
Прямо сейчас у меня есть это для подкласса Random Forest
:
class RandomForestRegressor(RandomForest):
def __init__(self):
self.tree = DecisionTreeRegressor
super().__init__()
В своей голове я устанавливаю значение self.tree
для класса, который хочу инициировать, и тогда self.trees
будет списком с 10 отдельными экземплярами DecisionTreeRegressor()
, но вместо этого я получаю ошибку сообщение:
TypeError: 'NoneType' object is not callable
Так что, очевидно, значение self.tree
не обновляется.
Кроме того, я не хочу, чтобы это был выбор, который делает пользователь, когда класс инициируется, и он должен быть установлен автоматически без их выбора.
Как правильно установить этот атрибут для унаследованного класса Random Forest
?
** РЕДАКТИРОВАТЬ: ** Это будет сделано в Python 3.