相关疑难解决方法(0)

3.5:类型提示和方法重载

编辑:我目前误解了该功能。它不是为多次分派而设计的

注意:虽然可以使用此语法提供多分派实现,但它的实现需要使用 sys._getframe() ,这是不受欢迎的。此外,设计和实现高效的多分派机制很困难,这就是为什么以前的尝试被放弃而转而使用 functools.singledispatch() 的原因。(参见 PEP 443 ,尤其是它的“替代方法”一节。)将来我们可能会提出一个令人满意的多分派设计,但我们不希望这样的设计受到为 stub 中的类型提示定义的重载语法的约束文件。这两个特性也有可能彼此独立开发(因为类型检查器中的重载与运行时的多次分派相比具有不同的用例和要求——例如

====

我已经离开 Java 领域有一段时间了,现在我要回到 Python 3.5。我想使用新的类型提示功能,但我在方法重载方面遇到了麻烦。从我对该功能的阅读来看,应该支持这一点。

这是我正在学习的一个快速小类:

licensing.pyi(注意保华)

import typing
import gitlab


class LicensingChecker(object):
    @typing.overload
    def __init__(self, url: str, api_key: str) -> None: ...
    @typing.overload
    def __init__(self, gl: gitlab.Gitlab) -> None: ...

    def iter_projects(self) -> typing.Iterator[str]: ...
Run Code Online (Sandbox Code Playgroud)

许可.py

import gitlab
import string


class LicenseChecker(object):
    def __init__(self, gl):
        self.gl = gl

    def __init__(self, url, api_key):
        self.gl = gitlab.Gitlab(url, api_key)

    def iter_projects(self):
        p = set()
        for i in …
Run Code Online (Sandbox Code Playgroud)

python python-3.5

6
推荐指数
1
解决办法
3587
查看次数

标签 统计

python ×1

python-3.5 ×1