从父类';谁的构造函数?python

从父类';谁的构造函数?python,python,python-3.x,inheritance,parent-child,Python,Python 3.x,Inheritance,Parent Child,假设我有一个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)。我知道这是一个奇怪的问题,我不知道是否有应用程序,但我似乎找不到答案。提前谢谢你 据我所知,做这件事的唯一好方法是做如下事情:

假设我有一个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)。我知道这是一个奇怪的问题,我不知道是否有应用程序,但我似乎找不到答案。提前谢谢你

据我所知,做这件事的唯一好方法是做如下事情:


P类:
定义初始化(self,a,b,c):
自我。_a=a
自我。_b=b
自我意识。_c=c
丙级(丙级):
定义初始化(self,a,b,c):
超级(C,自我).\u初始(a,b,C)
自我。_b=b
本质上,您可以调用超类构造函数来定义所有的值,但随后会在子类构造函数中重写该值(在本例中为
self.\u b

或者,如果您不希望
self.\u b
甚至成为类
C
中的一个对象,您也可以在
super()调用之后执行
del self.\u b
,将其完全删除


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

您的意思是
del self.\u b
因为我只想要
a
c
?是的,我知道这在大多数情况下都是不好的做法。我只是想知道万一我遇到一个可能需要它的问题。例如,我们可以将动物类定义为有眼睛,但是海洋最深处的一些鱼通过失去眼睛来适应,然后那类仍然是动物的鱼恰好没有眼睛。我知道这可能是个坏例子,但我认为在这种情况下,我们可能会遇到类似的情况,最好的做法可能是在像
AnimalWithEyes
这样的东西之间设置一个抽象类,而不是这样做。@JakeNguyen yeaaa这就是为什么继承通常被认为不是一项伟大的技术的原因。并不是世界上的每一件事都符合整洁的等级制度,事实上,大多数都不符合。喜欢组合而不是继承。如果你遇到这样的事情,那么不要使用inheritance@MLavrentyev我知道这是怎么回事,但是如果我们必须为我们不需要的每个特性创建一个代理类(因为缺少更好的词),那么它会变得有点混乱,你知道吗?但你是对的,我想我们不太可能遇到这么复杂的事情,但我只是觉得思考一下很有趣。@juanpa.arrivillaga是的,你是对的。我只是好奇是否有可能用Python实现:)