python - python类继承的基本用法

标签 python oop class inheritance

我刚刚开始使用 Python,并试图找出使用类的正确方法。

我的程序当前有两个类,分别称为 PlannerModelPlanner 与模型无关,因为它使用的任何 Model 都呈现一致的接口(interface)。所以,似乎如果我想要有几个不同的可用模型,它们都应该继承某物,以强制执行一致的接口(interface)。此外,一些模型类将共享功能。例如,单代理模型可能模拟一个代理,而双代理模型将模拟两个代理,每个代理的行为就像单代理一样。

那么 - 我应该如何实现这个/我需要哪些语言功能?

编辑:感谢您的快速回复,让我理清了鸭子类(class)的问题!那么,听起来好像只有当我想覆盖另一个 Model 功能的子集时,我才会使用继承? (对于我的 doubleAgent,我可能只使用 singleAgents 作为类成员?)

<子> 我浏览了其他一些具有类似标签的问题,但它们似乎更关心语法而不是设计选择。我还查看了 classes 上的官方 Python 文档并没有找到我要找的东西。 (可能是因为我不够了解,无法识别它。)

最佳答案

在 Python 中,您通常不会使用与静态类型语言中完全相同的 OOP 方法。具体来说,您实际上并不需要一个对象来实现特定的接口(interface)或从抽象基类等派生。相反,该对象只需要能够执行所需的操作。这通俗地称为鸭子类型。如果它像鸭子一样走路、说话像鸭子,那么,从所有意图和目的来看,它就是一只鸭子。

因此,只需决定您的对象需要哪些方法并确保它们始终拥有它们。如果您希望在系统中的不同参与者之间共享实现,那么您可以考虑类继承。但如果没有,那么您也可以实现不相交的类层次结构。

关于python - python类继承的基本用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7706520/

相关文章:

php oop 从数据库中选择数据

performance - Delphi 中接口(interface)对执行速度有什么影响?

c++ - 在可以创建彼此实例的不同类之间共享静态数据成员

c++ - 为什么 C++ 不让基类实现派生类的继承接口(interface)?

python - python中TCP连接的网络资源[Windows]

python - 使用 easy_install 安装 pip

python - 难以将单字母编程语言与正则表达式匹配

java - 如何在多个枚举名称中重用代码?

Matlab 类方法 : Too many arguments

python - 安装 gunicorn 的语法错误