首页 > 解决方案 > 从父类的构造函数继承一些但不是所有参数?Python

问题描述

假设我有父类 P

class P(object):
    def __init__(self, a, b, c):
        self._a = a
        self._b = b
        self._c = c

如果创建另一个类 C,它是 P 的子类,是否可以继承 P 的一些参数但不是全部(假设我只想将类 P 中的参数 a、c 传递给 C)。我知道这是一个奇怪的问题,我不知道这是否有应用程序,但我似乎无法找到答案。先感谢您!

标签: pythonpython-3.xinheritanceparent-child

解决方案


据我所知,唯一的好方法是执行以下操作:


class P:
    def __init__(self, a, b, c):
        self._a = a
        self._b = b
        self._c = c

class C(P):
    def __init__(self, a, b, c):
        super(C, self).__init__(a, b, c)
        self._b = b

本质上,您调用超类构造函数来定义所有值,但随后self._b在子类构造函数中覆盖该值(在本例中为 for )。

或者,如果您甚至不想self._b成为班级中的一员C,您也可以del self._bsuper().__init__()通话后将其完全删除。

不过,一般来说,让子类没有父类所具有的某些字段似乎是一种不好的做法,因为代码的其他部分可能依赖于该字段的存在。


推荐阅读