【发布时间】:2022-10-01 12:01:07
【问题描述】:
我有这个代码
from abc import ABC
from typing import Type
class AbstractFoo(ABC):
\"\"\"Abstract foo.\"\"\"
foo_attr: int
def foo_factory(foo_attr_val: int) -> type[AbstractFoo]:
class Foo(AbstractFoo):
foo_attr = foo_attr_val
return Foo
FooA = foo_factory(5)
class FooB(FooA):
\"\"\"Public concrete foo.\"\"\"
print(FooB.5)
这执行得很好,但是我用mypy foo.py 运行mypy,我得到一个看起来像的错误
foo.py:21: error: Variable \"foo.FooA\" is not valid as a type
foo.py:21: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases
foo.py:21: error: Invalid base class \"FooA\"
Found 2 errors in 1 file (checked 1 source file)
我不明白这里有什么问题以及为什么这种类型无效。解决这个问题的方法是什么?
我目前使用的是 Python 3.9,mypy 版本为 0.971。
标签: python factory mypy linter