这是一种创建一个继承自10个以上类的类的pythonic方法吗?或许我应该考虑一种不同的方法?
答案 0 :(得分:5)
允许,你也可以考虑创建一个复合对象,一个包含其他对象作为其成员的对象,而不是继承它们。
wiki的构图概念:composition
python中的多重继承:multiple inheritance
这些应该有助于您理解,然后在您的计划环境中决定什么对您更有利。
答案 1 :(得分:2)
是的,从完全合法的多个类继承。但是,如果您有10个超类,则可能需要调整继承树。也许某些类可以由中间类继承,以便最终的类继承更少的类。
您还应该了解可能为您要做的事情提供更清晰解决方案的构图。
答案 2 :(得分:1)
多重继承在Python中有效但不经常使用。我看到的大多数用例都是mixins(小片段混合到一个主要的层次树中)。
创建一个包含10个父母的类在任何OOP语言中都是难闻的气味而根本不是pythonic。你应该将类重构为另一种抽象。
答案 3 :(得分:0)
从Python中继承许多类(超过10个)可以吗?
它是“OK”,因为Python会接受它并且不会破坏或崩溃。
这是创建课程的pythonic方法吗?或者我应该考虑采用不同的方法?
当然,这不是创建课程的“pythonic”方式。拥有许多父类只会加剧众所周知的有几个父类(diamond problem等)的问题,加上它会使类直接依赖于许多其他类,并且很难找到每个行为的位置在课堂上来自。这与Python中的一般简约精神(或一般的良好编程实践)背道而驰。
请注意,创建另一个类的子类会建立“是一种”关系。你的班级真的是这十件事吗?或者你只是继承以获得一些已经实现的行为?查看面向对象设计的一些基本原则,例如SOLID,为什么有时我们可能更喜欢composition over inheritance,以及其他架构模式,例如entity–component–system。