1. 问题描述
在使用第三方包的过程中可能存在默认定义的变量,自己使用的时候想修改,但又不能直接修改别人的包,这时候该如何解决呢?我在这里提供一个实际遇到到的案例,大家有类似的情况可以参考一下,有更好的方式也欢迎留言告知。嘿嘿
2. 案例
在使用sklearn.metrics 中的 PredictionErrorDisplay 时,链接:PredictionErrorDisplay — scikit-learn 1.5.2 documentation。有两种绘图方式,如下
但是它内置设置了默认值,由于是个类,很不方便去修改(可能是我基础知识不行,我是力学专业的),这个时候我想修改默认值,但是不能修改包的源文件。
3. 解决方案
第一步:把这个文件内地代码全部复制出来,并命名为my1(自定义,随便起名),需要修的kind设置为自己想要的,如下图
第二步:把自定义的类导入,如下图
第三步:运行程序发现会报错,仔细检查my1中我们复制的程序,发现在导入时有继承关系,因此需要更改,如下图 ...utils
第四步:修改导入方式,这时候需要找到utils所在位置(要在第一步的那个程序中查找,我们复制出来的缺乏继承关系,是找不到的)。鼠标移过去就能看到继承关系,如下图
因此,在my1中修改继承关系,如下:
第五步:ok,可以运行了,以后类似的修改第三方包就可以这样实现,但不会影响官方源文件。