如何从自我生成返回类型提示?
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
的构造函数,注意b
是a
,然后更新返回类型,其中b
的返回类型已更新。如果不先运行代码,我看不到 linter 或 IDE 检查返回类型的方法,而且我们知道类型提示在运行时无效。不过,这是一个很酷的主意。这种行为让我想起了 kotlin 中的密封类。
【讨论】:
以上是关于如何从自我生成返回类型提示?的主要内容,如果未能解决你的问题,请参考以下文章