如何从自我生成返回类型提示?

Posted

技术标签:

【中文标题】如何从自我生成返回类型提示?【英文标题】:How to generate a return type-hint from self? 【发布时间】:2021-05-29 07:24:08 【问题描述】:

我想从类中__init__() 上定义的字符串生成返回类型提示:

class MyItem:
    return_type: str = None

    def __init__(self, return_type: str):
        self.return_type = return_type

    def get_item() -> self.return_type:   # <--- Is something like that possible?
        return ...
    

知道如何实现吗?

【问题讨论】:

请注意,您为MyItem 声明了两个变量return_type:一个是静态的,另一个是实例的属性。即:return_type: str = None在你的__init__中没有修改,通过MyItem.return_type访问。我不确定这是否需要。 感谢您的回复。我也怀疑。目的是在 IDE 中完成代码。 【参考方案1】:

没有。我不这么认为。 type checkers, IDEs, linters, etc... 使用类型提示。因为你的类直到运行时才被实例化,所以这是行不通的。

考虑以下代码:

class MyItem:
    return_type: str = None

    def __init__(self, return_type: str):
        self.return_type = return_type

    def get_item() -> self.return_type:   # <--- Is something like that possible?
        return ...

a = MyItem("Str")
b = a 
b.return_type = "int" 

linter 必须运行a 的构造函数,注意ba,然后更新返回类型,其中b 的返回类型已更新。如果不先运行代码,我看不到 linter 或 IDE 检查返回类型的方法,而且我们知道类型提示在运行时无效。不过,这是一个很酷的主意。这种行为让我想起了 kotlin 中的密封类。

【讨论】:

以上是关于如何从自我生成返回类型提示?的主要内容,如果未能解决你的问题,请参考以下文章

PHP 7接口,返回类型提示和自我

如何创建返回列表包含字符串的类型提示?

如何在 Pycharm 中输入提示“不返回的返回类型”

PhpStorm - 快速文档中的返回类型提示

Scala 集合如何从映射操作中返回正确的集合类型?

如何使用类型提示指定“可为空”返回类型