我正在继承 from sklearn.ensemble import RandomForestClassifier
,我正在尝试打印我的新估算器:
class my_rf(RandomForestClassifier):
def __str__(self):
return "foo_" + RandomForestClassifier.__str__(self)
给 foo_my_rf()
我也尝试过:
class my_rf(RandomForestClassifier):
def __str__(self):
return "foo_" + super(RandomForestClassifier, self).__str__()
结果相同 . 期望是非常像sklearn默认行为:
>>> a = RandomForestClassifier()
>>> print a
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=None, max_features='auto', max_leaf_nodes=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=1,
oob_score=False, random_state=None, verbose=0,
warm_start=False)
>>>
当我使用 print a.__str__()
时,这也是结果 .
我错过了什么?谢谢 .
与How do I change the string representation of a Python class?相关
1 回答
在
RandomForestClassifier
中,__repr__
和__str__
都查找从中调用它们的实例的类的名称(self
) . 您应该直接引用超类的名称 .Update 这就是你如何得到你想要的输出,虽然我没有得到,为什么你想要这样的东西 .
RandomForestClassifier
的__str__
和__repr__
返回类的实际名称是有原因的 . 这样你就可以eval
来恢复对象 . 无论如何,Update 2 覆盖
__init__
时没有参数,因为在超类__str__
和__repr__
中实现了扫描传递给__init__
的参数列表 . 您可以通过运行此代码清楚地看到它: