- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
很抱歉问了一个非常模糊的问题。但是如果我们在函数中实现多态性(以便该函数具有公共(public)接口(interface)但接受不同类型的对象),我找不到多态性的严格定义。例如,下面的代码真的实现了多态性吗?我们可以这么称呼吗?
class A:
def func(self):
pass
class B(A):
pass
class C(A):
pass
def common_interface(obj):
obj.func()
common_interface(B())
common_interface(C())
最佳答案
TLDR:是的,就是多态性。
<小时/>您的类实现教科书子类型多态性。 A
、B
和 C
均满足其公共(public)子类型 A
的接口(interface)。
您的函数实现 structural polymorphism (Python 将此称为 Protocol
)。它接受带有可调用 .func
属性的任何类型。
Well implemented亚型多态性也满足结构多态性。您的函数接受 B
和 C
不是因为它们满足 A
,而是因为它们具有可调用的 .func
属性 —他们这样做是因为满足 A
。
Python 的 „duck typing“使用对象时自然映射到结构类型。您可以通过检查类型(例如通过 isinstance )或使用单个/多个调度(例如通过 singledispatch
和类型注释)来强制使用其他类型语义。
对于此示例,您的函数还可以使用子类型多态性 (obj: A
) 或 sum type (obj: Union[B, C]
)。
关于python - 下面的代码在Python3中实现了多态性,这样说是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59810033/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!