发生背景:我在写程序的时候经常会忘记某个类或者某个函数中的某个参数会被我怎么处理,或者我经常忘记某个类包含哪些方法,所以我希望我定义完我的类或者函数之后,会有语法提示,但是就在我尝试让某个dict里面只能包含指定名字的两个键,且两个键的值的类型是固定的,我发现我做不到
↓
如果我想定义某个函数x,它需要传入类型为dict的参数a,并且这个dict只能包含两个键a,b,且这个两个键的类型为int
例如我希望我的函数x只能这样执行
xxx(a={'a':1,'b':1})
而不能
xxx(a={'c':1})
#或
xxx(a={'a':0.1,'b':1})
之类的
我的代码长这样
def move(self, pos, remain:(tuple[dict["surface":pygame.Surface,"pos":any]] or list[dict["surface":pygame.Surface,"pos":any]] or numpy[dict["surface":pygame.Surface,"pos":any]])=None):
pos = self.body.get_rect().move(pos)
self.screen.fill([0,0,0])
self.screen.blit(self.lastscreen,(0,0))
if remain != None:
for i in remain:
self.screen.blit(i["surface"],i["pos"])
self.screen.blit(self.body,pos)
pygame.display.flip()
i["surface"]并没有像我想象中的那样被vscode看作pygame.Surface,我不能得到对应的语法提示
我尝试将这个dict定义为一个新的类sfdict,我是这样写的
class sfdict:
def __init__(self, surface:pygame.Surface, pos) -> None:
self.surface = surface
self.pos = pos
pass
def s(self) -> dict[pygame.Surface,any]:
return {
"surface": self.surface,
"pos": self.pos
}
而后发现不行,于是我改成了问题步骤2(用代码块功能插入代码,请勿粘贴截图)中的代码,发现仍然不行
我希望我的vscode会把我问题步骤2(用代码块功能插入代码,请勿粘贴截图)提及代码中的 i["surface"] 看作一个pygame.Surface,而不是仅仅认为i是一个dict