特定类型列表的Python注解

ia2d9nvy  于 2023-02-15  发布在  Python
关注(0)|答案(1)|浏览(107)

我想注解strintlist,例如:

state = ['mystring', 4]

我不能使用元组,因为我必须在不改变状态引用的情况下改变整数(它被传递给函数,函数也必须修改它)。* 注意这是典型的元组情况,因为int在python中是不可变的,...*

def myfunc(state: ?) -> bool:
    ...
    state[1] += 1
    ...
    return success

最好的注解方法是什么?我试过了

state: list[str, int]

(类似于元组),编译良好,但mypy抛出异常,list只需要一个参数。

state: list[str|int]

但这是针对不同用例的“不同类型”。

5f0d552i

5f0d552i1#

根据@MisterMiyagi-s的评论,答案是,我们不应该仅仅因为需要修改值就使用list作为tuple的替代,List应该是相同类型(或更多类型)的对象序列。
适当的解决办法可能是:

from dataclasses import dataclass

@dataclass
class State:
    text: str
    pos: int
    
...

state = State('mystring', 4)

...

def myfunc(state: State) -> bool:
    ...
    state.pos += 1
    ...
    return success

相关问题