- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
今天,我深入探讨了Liskov的替代原理和协方差/协方差。
而且我陷入了两者之间的差异:
T = TypeVar("T", bound=Union[A, B])
T = TypeVar("T", A, B, covariant=True)
T
可以是:
Union[A, B]
(or a union of any subtypes ofA
andB
such asUnion[A, BChild]
)A
(or any subtype ofA
)B
(or any subtype ofB
)
bound=Union[A, B]
的情况,但没有得到选项#2
A, B, covariant=True
的含义。
mypy
,似乎无法弄清楚。
A
(或A
的任何子类型)B
(或B
的任何子类型)Union
的情况)
Are you sure that they're actually different?
mypy==0.770
。
from typing import Union, TypeVar, Generic
class A: pass
class ASub(A): pass
class B: pass
# Case 1... Success: no issues found
# T = TypeVar("T", bound=Union[A, B])
# Case 2... error: Value of type variable "T" of "SomeGeneric" cannot be "ASub"
T = TypeVar("T", A, B, covariant=True)
class SomeGeneric(Generic[T]): pass
class SomeGenericASub(SomeGeneric[ASub]): pass
TypeVar("T", A, B, covariant=True)
并不是真的正确,知道
A
和
B
的值限制实际上并不是协变的。
covariant=True
语法相关时,它们才有用。
最佳答案
协方差和反方差是与对象方向和泛型之间的相交有关的术语。
这是这个概念试图回答的问题:
Base
和Derived
。 List<T>
。 List<Derived>
可以在List<Base>
可以使用的任何地方使用? List<Base>
可以在任何地方使用List<Derived>
cab吗? List
为具有
covariance=True
。如果对(4)的回答为真,则称为“逆方差”。如果没有一个是真的,则它是不变的。
Derived
类。在这种情况下,
Base
不能与“MyType”一起使用-但
Derived
及其所有子类都可以使用。
关于Python键入TypeVar(A,B,covariant = True)是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61568462/
来自 here : bool shouldReclip(covariant CustomClipper oldClipper); AFAIK,关键字covariant 用于重写一个方法,明确告诉分析器
假设我有这两个类 class BaseClass { protected HashSet container; } class DerivedClass : BaseClass { D
问题 我想实现一些算法,这些算法在图上运行并返回节点对的分数,指示这些节点是否相似。这些算法应该适用于单个节点对和所有可能的节点对。在后一种情况下,应返回一个集合/矩阵。 我的方法 算法源自 clas
我刚刚遇到一个关于泛型和协变的有趣问题,长话短说,我花了 30 分钟尝试声明一个类型,直到我放弃。 为了清楚起见:我已经有了解决方法,目前不需要我的项目帮助。我之所以问这个问题是因为我是异常复杂的泛型
我有这样一个类: public class MyClass{ private MyTape data; private List someOtherdata; } 我正在尝试在 And
今天,我深入探讨了Liskov的替代原理和协方差/协方差。 而且我陷入了两者之间的差异: T = TypeVar("T", bound=Union[A, B]) T = TypeVar("T", A,
我正在尝试使用Ceres编写BA优化器,并希望为优化结果计算协方差。但是该程序停留在covariance.Compute(covariance_blocks, &problem)上,似乎永远不会停止计
我正在编写一个名为 Factory 的通用工厂类 //abstract factory template class Factory{ public: virtual C*
当我们有两个结构,并且一个可以隐式转换为另一个时,它看起来像 System.Nullable<>两者的版本也可以隐式转换。就像,如果结构 A隐式转换为 struct B , 然后 A?转换为 B? 这
我正在阅读 Jon Skeet 的《深入了解 C#》。虽然我已经理解了 CoVariance 和 ContraVariance 的概念,但是我无法理解这一行: Well, covariance is
我正在读《深入Scala》第一节,第一节中有两句话是关于“协方差”和“逆变”的: Covariance (+T or ? extends T) is when a type can be coerce
我正在尝试创建一个二叉树类 Tree和二叉搜索树类 BST它继承自 Tree ,以及 iterator每个嵌套类,其中 BST::iterator继承自 Tree::iterator . 现在,问题是
我通过继承创建了两个简单的类,并在子类中添加了一个虚函数和覆盖。 class Parent { public: virtual Parent foo(); }; class Child : p
我有一个非常复杂的类层次结构,其中的类是相互依赖的交叉类:有两个抽象类 A 和 C,它们分别包含一个返回 C 和 A 实例的方法。在他们继承的类中,我想使用协变类型,在这种情况下这是一个问题,因为我不
我试图写一个不可变的 Matrix[A]类(class)。我希望该类在 A 上是协变的但是当我把 +前面A编译器开始提示类中的某些操作。 以下是我的 Matrix 的相关子集类(实际类比以下子集大 5
我读了一些关于用于 CV 对象跟踪的卡尔曼滤波器的著作,但我找不到关于选择的一些引用:1)过程噪声协方差 Q; 2)测量噪声协方差R。到目前为止,我已经意识到该模型是运动方程(有人使用加速度作为状态变
我有以下表示数值数组的类 class Array { protected : double *data; // this will hold the data of the array
我有以下情况: 我指定一个纯虚函数: 虚拟 PredictedMatch PredictMatch(const Match &match) const = 0; 我还有: 类 ImpactPredic
我试图从网上的几篇文章和 StackOverflow 上的问题中找出 Covariance 和 Contravariance 这两个词的确切含义,据我所知,这只是多态性的另一种说法。 我上面的说法正确
新 Guava 10 Optional 状态是自然协变的,因此可以强制转换。 如果我尝试,它看起来有点难看: Optional opti = Optional.of(42); Optional op
我是一名优秀的程序员,十分优秀!