Mypy 依赖动态访问时赋值类型不兼容,表达式的类型为“object”

问题描述 投票:0回答:0

我想知道为什么这是不正确的。这是一个突出错误的小例子:

import typing

kwargs: dict = {}
region, city, state = kwargs.get('region'), kwargs.get('city'), kwargs.get('state')

ordered_params = [city, state, region]
last = None
valid_depth = 0
while ordered_params:
    last = ordered_params.pop()
    if last is None:
        break
    valid_depth += 1

if any(p is not None for p in ordered_params):
    raise ValueError("must specify everything")

filter_requirements = [
    (
        'region', []
    ),
    (
        'state', [
            ('region', region),
        ]
    ), (
        'city', [
            ('region', region),
            ('state', state),
        ]
    ), (
        'name', [
            ('region', region),
            ('state', state),
            ('city', city),
        ]
    )
]

main_select: str
required_where: typing.List[typing.Tuple[str, str]]
main_select, required_where = filter_requirements[valid_depth]

最后一行说表达式有一种“对象”类型,但运行得很好。

python mypy
© www.soinside.com 2019 - 2024. All rights reserved.