虽然我对字典的结构使用类型暗示,但VSCode的微软intellisense引擎似乎无法识别字典中的类。
例如,这不起作用:
class MyClass():
def myf(self, methods):
foo = "bar"
return foo
mystring: str
mydict: Dict[str: MyClass] = {}
# mydict[mystring]. # <--- after typing the point ".", I expected hints from inte
我想使用包含Enum和Enum成员的集合。但是,当我试图访问时,我无法找到一种不会导致类型错误的编写方法。(请参见__name__何时可预期为的列表。)
对于上下文,中的BDFL给出了关于发生什么的简短解释。基本上,当您迭代具有不同类型的项的集合时,它们将被连接。所以在下一个例子中,mypy要说的是Enum和Enum成员连接到object.
示例1:
from enum import Enum
from typing import Type
class Color(Enum):
RED = 1
my_collection: tuple[Type[Color], Color] = (
我在a.py上有以下代码
class Tags(enum.Flag):
NONE = 0
A = enum.auto()
B = enum.auto()
C = enum.auto()
# Allow using tags.A instead of tags.Tags.A
globals().update(Tags.__members__)
但是,当我在其他文件上使用它时,mypy (正确地)无法识别属性:
import tags
print(tags.A) # Module has no attribute "A"
有没有可能在Pytho
我在服务器上执行左连接,并返回一个与元数据中定义的对象对应的新对象。然而,breeze似乎无法识别返回对象的类型。
我有一个实体,学校,它的元数据被加载。
public class School{
public int Id{ get; set;}
public string name {get; set;}
}
我的查询如下所示
var r = EntityQuery.from('School')
在我的方法中,如果我使用return ContextProvider.Context.Schools,那么就会收到类型为return ContextProvider.Co
from typing import Callable, TypeVar
T = TypeVar('T')
IndicatorFunction = Callable[[T], bool]
# mypy accepts this annotation.
s1: Callable[[T], bool] = lambda x: False
# mypy rejects this annotation, but it's just an alias of the first one.
s2: IndicatorFunction[T] = lambda x: False
如何让这段代码成功运行并通过mypy检查?
from datetime import datetime
class TimeStamp(str):
"""ID with a short form and a long form."""
def __new__(cls, datetime) -> TimeStamp:
short = str(datetime.timestamp())
long = datetime.strftime("%Y-%m-%d %H:%M:%S
Python Enums通常从str继承,然后重写_generate_next_value以返回枚举名称,这样就可以使用auto()函数将名称简单地作为字符串返回。但是,这会在MyPy中引发一个错误。 例如,如果您声明: from enum import Enum, auto
class StrEnum(str, Enum):
def _generate_next_value_(name, start, count, last_values):
return name
class Foo(StrEnum):
bar = auto()
baz = a
当我编写以下代码时,mypy会发出一个错误(就像它应该发出的那样):
from typing import TypeVar, Generic, List
Data = TypeVar("Data")
class State(Generic[Data]):
def __init__(self) -> None:
self.d: Data = 8.9
s = State[int]()
当我从ctor中删除(完全冗余的,对吗?) -> None部件时,mypy会忽略类型不匹配。为什么会这样呢?(请注意,这不是的副本)
稍微有点背景,我基本上需要定义一个int包装器类型,比如MyInt (以及其他一些类),以及另一个可以接受MyInt对象以及其他类型对象的通用Interval类型。由于Interval所接受的类型不属于一个整洁的层次结构,我认为这将是实验Protocol的一个完美的用例,在我的例子中,它需要几个方法和几个@classmethod,所有的方法都返回一个“自我类型”,即MyInt.my_method返回一个MyInt。这是一个MCVE:
from dataclasses import dataclass
from typing import Union, ClassVar, TypeVar, Ge
我使用类型注释来允许我的IDE PyCharm为我提供自动完成和打字机。
对于我当前的项目,我构建了一个多层次的泛型类层次结构,但是,在某些时候,某些类型信息似乎会丢失。
我不确定这是否是我的错,是python类型注释/泛型机制的问题,IDE的问题还是预期行为的问题。
让我用一个简短的例子来解释这一点:
L = TypeVar("L")
class List(Generic[L]):
# rather generic list implementation
def get(self) -> L:
return None
T = Type
由于Python支持类型注释,因此它启用了静态类型规则。在使用ast模块生成的AST时,我突然想到,考虑到这样的规则,可以推断所有类型,所以不应该需要类型注释。给定静态类型杂注(可能是代码文件顶部的注释),解析器中的另一层逻辑可以遍历AST以确定所有变量的类型。
例如,从获取这段代码片段
d = {} # type: Dict[str, int]
with open(sys.argv[1]) as f:
for s in f:
for word in re.sub('\W', ' ', s).split():