- 2024-08-09Python 类型提示:显式排除无效的重载组合?
我有一个带有两个参数的函数,每个参数都可以采用两种类型之一。四个成对组合中的三个有效,但第四个无效。我想找到一种方法来键入提示此场景,可以检查这些类型,但不一定每次调用foo()时都必须编写代码来检查无效情况。有没有办法可以改进foo()、bar()或两
- 2024-08-08为什么 Python NewType 与 isinstance 和 type 不兼容?
这似乎不起作用:fromtypingimportNewTypeMyStr=NewType("MyStr",str)x=MyStr("HelloWorld")isinstance(x,MyStr)我什至没有得到False,但是TypeError:isinstance()arg2mustbeatypeortupleoftypes因为MyStr是一个函数
- 2024-08-08Pylance reportArgumentType 与 Pydantic 的 BeforeValidator
我正在编写一个类似于pydantic叫ImportString的ImportPlugin类型,它导入并可选择调用对象并返回调用结果。例如:fromtypingimportAnnotated,TypeVarfrompydanticimportBaseModel,BeforeValidatorclassMyModel(BaseModel):length:Im
- 2024-08-08行为类似于基本类型的泛型类型
我想创建一个泛型类型A[T],其行为与T完全相同,只不过我可以在运行时告诉我该类型实际上是A[T]而不是T我尝试过classA(Generic[T],T):pass但是似乎不起作用,正如mypy抱怨的那样,例如,A[str]的类型为object作
- 2024-08-08如何在通用 Python 类中输入 __eq__ ?
当我定义带有泛型类型参数的类型时(例如K/V映射的键和值),我似乎无法编写合适的isinstance检查来实现__eq__:fromcollectionsimportOrderedDictfromcollections.abcimportMutableMappingfromtypingimportTypeVarK=TypeVar("K")
- 2024-08-08函数返回类型联合的赋值中的不兼容类型
修复此类函数的mypy的最佳方法是什么?fromtypingimportUniondefa(b:int)->Union[int,str]:ifb:returnbelse:return'2'c:int=a(1)d:str=a(0)mypy结果:error:Incompatibletypesinassignment(expressionhasty
- 2024-08-08Python @overload 使用联合类型会导致函数签名重叠错误
我想编写以下重载的Python函数:fromtypingimportAny,TypeVar,overload_T1=TypeVar('_T1')_T2=TypeVar('_T2')_T3=TypeVar('_T3')@overloaddefparse_as(ty:type[_T1]|type[_T2],s:bytes)->_T1|_T2:...@overload
- 2024-08-04如何为可以在递归调用中重新分配的 python 函数制定类型提示?
采取以下最小示例:S=TypeVar("S",bound=int|str)defmeth(a:S)->S:ifa=="5":returnstr(meth(int(a)))returna特别是,上面的方法可以采用字符串或整数。它总是返回与其输入相同类型的值,但它可以递归地调用自身,在这种情况下,S的值
- 2024-08-04textx 模型的类型检查
我正在尝试使用python的textx模块来解释语法的语言原型。我正在创建一个像这样的模型:fromtextximportmetamodel_from_strfunl_grammar="""Model:statement*=Statement;Statement:FunctionDefinition|Function;FunctionDefinition:name=ID
- 2024-07-31mypy 从被调用函数推断类型签名
有没有办法从被调用函数推断调用者的类型签名?在下面的示例中,(重载)Test1.f函数按预期工作。Test2.get_arg().f也有效。问题是:以类型安全的方式实现Test2.f的正确(最短)方法是什么,或者最接近的解决方法是什么?Test2.f只是Test2.get_a
- 2024-07-31具有自引用的类装饰器的 Python 类型提示
我的最终目标是编写一个系统来轻松记录函数调用(特别是类方法)。我首先编写一个带有包装方法的类Loggable,该方法允许我装饰子类方法并记录它们的调用|||现在我可以编写子类并记录它们的调用:Param=ParamSpec("Param")RetType=TypeVar("RetType")CountType=
- 2024-07-31如何从类型提示中删除Optional?
如何在python中解包(这个问题让人想起rust)类型提示?或者换句话说,如何将list[Optional[str]]类型的变量变成list[str]?问题:我做了一个小函数来解释我的问题。所以我从一个空列表开始,但在某些点(这里称为点B)我想将我的列表传递给我的代码中的
- 2024-07-31类型提示和@singledispatch:如何以可扩展的方式包含 `Union[...]`?
我正在重构一个函数,该函数将各种日期格式(即ISO8601字符串、datetime.date、datetime.datetime等)转换为Unix时间戳。我希望新函数使用@singledispatch而不是类型检查,但我不知道如何保留以前函数的类型提示:旧函数:使用类型检查importdat
- 2024-07-31指示参数应该是可变引用
使用PEP484和585中指定的类型提示语法,是否有任何方法可以指示函数的参数应该是由函数修改的可变引用?例如,C#有ref参数,因此在Python,有等效的吗?例如>>>deffoo(spam:"Mutable[List[int]]"):...spam.append(sum(spam))...>>>a=[1,2,3]>>>foo(a
- 2024-07-31类型提示在 pycharm 2018.1 中并不总是有效?
我今天开始使用类型提示。在阅读了有关类型提示的文档后,我尝试编写一些愚蠢的示例来检查它是如何工作的,但被困在像这样简单的事情上。a:int=7.33我没有收到任何警告或错误。一切都正常,就像我没有使用类型提示一样。我期待一个警告,说浮点数不能分配给intvar。我尝
- 2024-07-31Python 3.6 中的相互递归类型,使用命名元组语法
我正在尝试实现图的节点和边。这是我的代码:fromtypingimportNamedTuple,ListclassNode(NamedTuple):name:stredges:List[Edge]classEdge(NamedTuple):src:Nodedest:Node这会引发错误,因为创建Edge时未定义Node类型。
- 2024-07-31包含命名元组的列表的类型提示
我正在阅读这里,但它是关于命名元组的类型提示。是否可以为包含List的namedtuple创建类型提示?例如:|||我尝试过:firefoxprofile=namedtuple("Profile",["Name","Path","isRelative","Default"])#Willcontainalis
- 2024-07-31使用 keras 模型对函数进行 Python 类型提示
如果我创建这样的函数:defmdl(input_shape):model=Sequential()model.add(Conv2D(depth=64,kernel_size=(3,3),input_shape=input_shape,activation='relu'))model.add(Dense(32),activation='relu')model.add(Dropout(0.3))m
- 2024-07-31如何检查具体方法是否遵守抽象方法的类型提示
这是一个由两部分组成的问题,但第二部分依赖于第一部分。出于教育目的,我试图为组实现一个抽象基类和测试套件(概念来自抽象代数)。代数群定义的一部分相当于类型约束,我想在ABC上实现该类型约束,并且如果具体类上的方法不符合该约束,就会有一些抱怨。I对于逻辑
- 2024-07-31Python:自动完成可以用于列表中的元素吗?
Python在函数参数和函数返回类型中具有类型提示。类的元素是否有类似的东西?我希望能够在如下示例中使用自动完成功能:classMyClass:defhello(self):print("Hello")mylist=[]mylist.append(MyClass())foriinmylist:i.hello()#Noautocomplete
- 2024-07-31类字段/实例变量的 Pycharm 类型提示
每当我们在Java中需要一个新对象时,我们都会声明类型和名称,选择是否为其提供初始值。在Python中我们不能这样做,因为我们没有声明类型。我怎样才能解决这个问题,因为如果没有声明类型;我没有收到任何代码完成提示。就像特定对象的字段或我们可以在该对象上调用的任何方法一样..
- 2024-07-31python 中 COM 对象的正确类型提示是什么?
我在python中使用COM对象来向3rd方软件公开可编程接口。这是通过使用Dispatchfromwin32com.client来实现的。我的项目也一直在使用python.3.7中的类型提示,但是我不确定如何为了类型提示的目的定义这些COM对象的类型。这个问题涉及我拥有的所有COM
- 2024-07-31用于类型注释的类型注释是什么?
当函数采用类型注释作为参数时,您使用什么类型注释?为什么我采用类型注释作为参数?我有一个函数尝试根据类型注释解析字符串.例如defget_appropriate_type_converter(type_annotation)->Callable[[str],'type_annotation']:例如get_appropriate_type_c
- 2024-07-31Python 中的递归数据类型
Python中最接近Haskell中的递归数据类型的是什么?(即在定义自身时使用类型自己的定义。)编辑:为了给出递归类型的更具体定义,下面是Haskell中的二叉树:dataTreea=Leafa|Branch(Treea)(Treea)我的阅读方式如下:二叉树可以是叶子,也可以包含两
- 2024-07-31相同类型的多个参数的类型提示?
除了:deffoobar(a:int,b:int,c:int,d:str):...也许有类似:deffoobar([a,b,c]:int,d:str):...显然是概念性的,但可以减少重复类型提示的方法之外,还有另一种方法可以输入相同类型的提示参数Python中没有像建议的那样直接将多个参数分组到单个类型提