collections.Counter 的正确 mypy 注释是什么?

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

我的问题

我正在编写一个带有 Counter 的 Python 函数,用于计算字符串并打印计数的字符串总数。我尝试以各种方式注释该函数。但都没有通过 mypy 测试:

代码

from collections import Counter
import typing

def f1(c : Counter[str]) -> None:
    print(c.total())

def f2(c : Counter) -> None:
    print(c.total())

def f3(c : Counter[str, int]) -> None:
    print(c.total())


c : Counter = Counter()
c.update(['a', 'b', 'c', 'a', 'b', 'c'])

f1(c)
f2(c)
f3(c)

错误

use_counter.py:5: error: "Counter[str]" has no attribute "total"
use_counter.py:8: error: "Counter[Any]" has no attribute "total"
use_counter.py:10: error: "Counter" expects 1 type argument, but 2 given
use_counter.py:11: error: "Counter[Any]" has no attribute "total"

我尝试过什么

注释

Counter
的各种方式(在
f1
f2
f3
)和谷歌搜索答案。

我的问题

注释 collections.Counter 以便 mypy 识别其方法(如

total
)的正确方法是什么?

python mypy python-typing python-3.10
1个回答
0
投票

Counter.total
在 0.940 版本中被添加到 mypy。您的代码 f1 和 f2 部分工作正常

from collections import Counter


def f1(c: Counter[str]) -> None:
    print(c.total())


def f2(c: Counter) -> None:
    print(c.total())


c: Counter = Counter()
c.update(["a", "b", "c", "a", "b", "c"])

f1(c)
f2(c)

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