从父类的构造函数继承一些但不是全部参数?蟒



假设我有父类P

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

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

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


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

(。或者,如果你甚至不希望self._b成为类C的东西,你也可以在super().__init__()调用后做del self._b以将其完全删除。

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

最新更新