问题如何只键入协议方法的第一个位置参数并让其他人取消类型? 例如,有一个名为MyProtocol的协议,它有一个名为my_method的方法,只需要第一个位置参数是一个 int,同时让 rest 是无类型的。 以下 class 将正确无误地实现它:class Imp1(MyProtocol): ...
问题如何只键入协议方法的第一个位置参数并让其他人取消类型? 例如,有一个名为MyProtocol的协议,它有一个名为my_method的方法,只需要第一个位置参数是一个 int,同时让 rest 是无类型的。 以下 class 将正确无误地实现它:class Imp1(MyProtocol): ...
我想知道为什么| ,我的函数doThingsWithOrProps中 SRTP 上下文中的“或”模式未按预期工作,也就是它应该能够接受具有属性PropA或另一个属性PropB的类型,但它被解释为 AND &模式就像函数doThingsWithAndProps一样,它实际上没有意义,因为相 ...
假设我想将参数注释为 function,它应该同时满足typing.Sized和typing.Hashable (任何其他 2+ 类型都可以应用,我只是为了举例而选择了这两个)。 我将如何注释这个? 鉴于可以使用Sized | Hashable将类型组合为“或”。 Sized | Hashabl ...
Python 中是否有一种方法可以不可知地添加到集合中? 鉴于鸭子类型的流行,我很惊讶添加到list的方法是append(x)但添加到set的方法是add(x) 。 我正在编写一系列需要构建 collections 的实用函数,并且理想情况下希望它们不要关心累积结果的类型。 它至少应该适用于li ...
Pycharm 提到“预期类型 'Element',得到了 'Type[Button]' ”。 是否有任何适当的方法可以将返回类型作为所有孩子的父母? ...
这是我一直用于数字数据的简单 numpy 鸭子数组的最小工作示例。import numpy as np class DuckArray(np.lib.mixins.NDArrayOperatorsMixin): def __init__(self, array: np.ndarray) ...
如何在不违反 LSP 的情况下遵循 Open Close 原则,同时决定在静态类型语言中使用不同参数调用哪个方法? 考虑这样的要求动作一:对表1进行DB操作动作2:根据输入对表2进行DB操作行动 3:什么都不做上述要求的代码看起来像 通过将 if 语句的主体移动到方法并维护以操作为名称的键的 ma ...
如何让mypy认识到 function 的参数需要是特定基础 class 的子类? 考虑以下: 如main.py所示, A的所有子类都实现了一个方法f 。 test.py中的call_f采用A的子类之一的实例并调用此方法。 test.py的if __name__ == "__main__":部 ...
python 支持类型提示: https://docs.python.org/3/library/typing.html 我想知道这些提示是否也可用于在运行时动态强制类型。 例如: class C: def __init__(self): self.a : int ...
我试图理解为什么任何具有__contains__方法的类都会成为 Container 抽象类的实例。 我有点困惑,因为正确的方法应该像这个class dumb(Container):并定义自己的__contains__方法。 应该是因为鸭子打字,但鸭子打字在哪里? ...
我有一个类,其中一个方法应该只运行一次。 当然,它可以很容易地用人工has_executed = True/False标志来完成,但为什么要使用它,如果你可以删除方法本身呢? python是一种鸭式语言,一切都是参考, bla-bla-bla ,会出什么问题? 至少是这样的想法。 我实际上无法做 ...
我正在使用一些派生自父 class ( Widget ) 的类; 在孩子中,有些具有某些属性( posx和posy ),但有些则没有。import enum from dataclasses import dataclass from typing import List class Colo ...
使用 python 类型系统,我有时可以知道变量或表达式的类型,因为我已经安装了运行时检查来验证它。 有没有办法用注释来表示这个? 例如,假设我有一个 function combop ,如果它的参数是 class Combination则返回True 。 并进一步假设 class Combinati ...
假设我有一个协议Foo 。 和 function 如下所示: 我希望ImplA和ImplB (如下所示)应该是func的可接受参数,因为val: int比val: Optional[int]更具体。 由于它不起作用,我必须定义Bar并采用两个类的联合。 但是,有没有一种方法可以构建一个协议,使得va ...
我有一个列表,我只需要检查它是否为空。 check = [] and True print(check) # prints [] check = [1] and True print(check) # prints True 我只想在if语句中使用check来检查变量的真实性,如下所示: if ...
我有通过查找_fields属性来检查命名元组和数据类的_fields : 如何使用 Python 3.10 的匹配/大小写结构模式匹配来表达这一点? ...
在 rust 中,一个显式类型impl Trait for Object保证Object将具有此特征。 现在C++20 的概念当然更通用一些,因为它们不仅仅与一种类型相关联,而且可能与多种类型相关联。 然而,这引出了一个问题,人们将如何确认您实现的某些类型实际上满足了某些概念。 现在的概念有点像鸭 ...
我想创建一个自定义 Python class 像字典一样进行 JSON 序列化。 以 Python 的鸭子类型命名,我想我可以创建一个 class,它看起来和嘎嘎声都像一个字典。 However, the class shown below is apparently not dict-like ...
在某些情况下,结构子类型是否会导致无法使用 LSP? 例如,假设我有一个带有标称类型的 Python* 设置,例如class Foo(ABC): def frobnicate(self) -> int: """ frobnicate in a general fash ...
我有一个可能是字符串化日期或数字的值。 我想以不同的方式处理每种情况。 日期值可以是任何可以被日期库解析的有效日期字符串,比如 dayjs。 例如:“2020 年 10 月 10 日"10/10/2020" 、 "10-20-2020" …… 数字值可以是实际数字,也可以是字符串形式的数字,因此值 ...