提问人:Anonymous 提问时间:11/10/2023 最后编辑:Anonymous 更新时间:11/10/2023 访问量:64
有没有办法将类用作 python 内置数值类型的类型提示?
Is there a way to use classes as type hints for python's built-in numeric types?
问:
我想创建一个类,该类可以用作任何 python 内置数值类型的类型提示,例如 int、float、complex 或继承自 number 的类。数
我想要这样的东西:
from fractions import Fraction
class AnyNumber(<whatever here>):
...
def foo(number: AnyNumber):
...
foo(1) # Valid
foo(1.0) # Valid
foo(1j) # Valid
foo(Fraction()) # Also valid
我该怎么做?
我也尝试过使用数字。Number 作为类型提示,但我的 Pylance 和 mypy 说“int 与 Number 不兼容”。
有没有其他方法可以在不使用的情况下做到这一点?Union
答:
0赞
blhsing
11/21/2023
#1
由于所有可能的数字都是复数,因此您可以改用该协议来键入提示任何数字:typing.SupportsComplex
from typing import SupportsComplex
from fractions import Fraction
def foo(number: SupportsComplex):
pass
foo(1) # Valid
foo(1.0) # Valid
foo(1j) # Valid
foo(Fraction()) # Also valid
演示:https://mypy-play.net/?mypy=latest&python=3.11&gist=e327d5b393677e8b97b125d3184d74a6
评论
Protocol