2017-12-18 219 views
0

这是一种pythonic的方式来创建一个继承超过10个类的类?或者,也许我应该考虑一种不同的方法?Python的继承 - 多个超类

+0

通常最好避免多继承。 10听起来过度。考虑遏制(即对这10个类中的一些实例化的成员)。 –

回答

5

这是允许的,你也可以考虑创建一个组合对象,这个组合对象包含其他对象,因为它是成员,而不是继承它们。

维基组成的概念:composition

多重继承在Python:multiple inheritance

这些应该可以帮助你了解,然后再决定什么是你的程序的情况下对你更好。

1

多继承在Python中有效,但不经常使用。我看到的大部分使用案例是mixins(小片段混入主要的多层树)。

创建一个包含10个父母的班级,在任何OOP语言中都是难闻的气味,而且根本不是pythonic。你应该将你的课程重构为另一种抽象。

2

是的,从多个类继承完全合法。但是,如果你有10个超类,看起来你可能需要调整你的继承树。也许有些类可以被中间类继承,以便最终的类从更少的类继承。

您还应该了解可能为您正在尝试做什么提供更清洁解决方案的组合。

0

从Python中的许多类(超过10个)继承是否可以继承?

这是“OK”,因为Python会接受它并且不会崩溃或崩溃。

这是创建类的pythonic方式还是我应该考虑一种不同的方法?

这当然不是创建班级的“pythonic”方式。拥有许多父类只会加重有几个父类(diamond problem等)的众所周知的问题,再加上它使得类直接依赖于其他许多类,并且使得很难找出类中每个行为的来源从。这违背了Python简洁的一般精神(或一般的良好编程习惯)。

请注意,让另一个类的子类创建一个“是”的关系。你的班级真的是十件事情吗?还是你只是继承获得一些已经实施的行为?查找面向对象设计的一些基本原则,例如SOLID,为什么有时我们可能更喜欢composition over inheritance,以及替代架构模式,如entity–component–system