You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义sklearn兼容类时__repr__触发AttributeError的原因排查

自定义sklearn分类器在Spyder交互环境中触发AttributeError的问题

我正在实现兼容sklearn的自定义分类器,继承自BaseEstimator和ClassifierMixin,并在构造函数中定义了自定义参数。调试时遇到一个特殊问题:在Mac的Spyder IPython控制台中直接输入对象调用__repr__时,会触发AttributeError,提示分类器缺少指定属性;但以脚本形式运行、在Windows的PyCharm中均无此错误。

最小复现示例

from sklearn.base import BaseEstimator, ClassifierMixin


class MyClassifier(BaseEstimator, ClassifierMixin):
    def __repr__(self, **kwargs):
        return "In MyClassifier.__repr__() ..."

    def __init__(self, my_arg=0):
        pass


mc = MyClassifier()
# 仅在交互环境中触发错误:
# AttributeError: 'MyClassifier' object has no attribute 'my_arg'
mc

已发现的现象

  • 不继承BaseEstimator则无错误
  • 将my_arg赋值给同名的self.my_arg可解决错误,但赋值给不同名属性无效

请问这是sklearn存在成员变量需与形参同名的隐式约定,还是Spyder、Python版本或其他环境的特性,或是我的实现有误?

我的环境配置:Spyder 5.5.2,Python 3.9.7,IPython 8.18.1,sklearn 1.3.2,Mac Intel Core i7 + Sonoma 14.4.1。

内容的提问来源于stack exchange,提问作者Igor F.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 11:57:24