我刚刚开始使用 Python,并试图找出使用类的正确方法。
我的程序当前有两个类,分别称为 Planner
和 Model
。 Planner
与模型无关,因为它使用的任何 Model
都呈现一致的接口(interface)。所以,似乎如果我想要有几个不同的可用模型,它们都应该继承某物,以强制执行一致的接口(interface)。此外,一些模型类将共享功能。例如,单代理模型可能模拟一个代理,而双代理模型将模拟两个代理,每个代理的行为就像单代理一样。
那么 - 我应该如何实现这个/我需要哪些语言功能?
编辑:感谢您的快速回复,让我理清了鸭子类(class)的问题!那么,听起来好像只有当我想覆盖另一个 Model
功能的子集时,我才会使用继承? (对于我的 doubleAgent,我可能只使用 singleAgents 作为类成员?)
<子> 我浏览了其他一些具有类似标签的问题,但它们似乎更关心语法而不是设计选择。我还查看了 classes 上的官方 Python 文档并没有找到我要找的东西。 (可能是因为我不够了解,无法识别它。)
最佳答案
在 Python 中,您通常不会使用与静态类型语言中完全相同的 OOP 方法。具体来说,您实际上并不需要一个对象来实现特定的接口(interface)或从抽象基类等派生。相反,该对象只需要能够执行所需的操作。这通俗地称为鸭子类型。如果它像鸭子一样走路、说话像鸭子,那么,从所有意图和目的来看,它就是一只鸭子。
因此,只需决定您的对象需要哪些方法并确保它们始终拥有它们。如果您希望在系统中的不同参与者之间共享实现,那么您可以考虑类继承。但如果没有,那么您也可以实现不相交的类层次结构。
关于python - python类继承的基本用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7706520/