如何访问继承类的关键字参数默认值?以seaborn.JointGrid为例
解决Seaborn JointGrid子类无法访问初始化变量的问题
我明白你在创建CustomJointGrid子类时遇到的困扰——父类JointGrid的__init__方法里定义的size、ratio、space这些参数都是局部变量,没有被绑定为实例属性,所以子类没法直接访问它们。
这里有个直接且可靠的解决办法:在子类的__init__中显式接收这些参数,先把它们赋值给子类实例的属性,再传递给父类的初始化方法。代码示例如下:
import seaborn class CustomJointGrid(seaborn.JointGrid): def __init__(self, *args, size=6, ratio=5, space=.2, **kwargs): # 将需要的参数保存为子类实例属性 self.size = size self.ratio = ratio self.space = space # 调用父类的初始化方法,传递所有参数 super().__init__(*args, size=size, ratio=ratio, space=space, **kwargs)
这样一来,你后续在子类的其他方法里,就可以通过self.size、self.ratio、self.space直接访问这些值了。
如果之后还需要访问__init__里的其他参数(比如dropna),都可以用同样的逻辑:先在子类__init__的参数列表里声明,保存为实例属性,再传递给父类。
另外补充一点:如果你不想显式声明这些参数,也可以尝试从JointGrid初始化后生成的实例属性反向推导(比如从self.fig的尺寸或者轴的布局参数里找线索),但这种方法不太可靠——因为Seaborn的内部实现可能随版本更新变化,显式保存参数的方式会更稳定。
内容的提问来源于stack exchange,提问作者Roald
相关产品推荐
相关产品推荐

