gpt4 book ai didi

python-3.x - 注释 Python3 中静态方法的返回类型

转载 作者:行者123 更新时间:2023-12-04 14:36:10 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Using the class as a type hint for arguments in its methods [duplicate]

(3 个回答)


5年前关闭。




我开始使用更多 Python3 的打字支持,我希望能够注释 staticmethods 的返回类型充当替代构造函数。

下面是一个最小的例子;如果我包含注释,它会失败:

def from_other_datastructure(json_data: str) -> MyThing:
NameError: name 'MyThing' is not defined

import typing


class MyThing:
def __init__(self, items: typing.List[int]):
self.items = items

@staticmethod
def from_other_datastructure(json_data: str):
return MyThing(
[int(d) for d in json_data.split(',')]
)

if __name__ == '__main__':
s1 = MyThing([1, 2, 3])

s2 = MyThing.from_other_datastructure("2,3,4")

那么如何在为类型注释定义类之前引用类呢?

最佳答案

发布后,我找到了正确的答案 - 前向引用可以定义为字符串。

所以正确答案相当简单,而且 PyCharm 还提供了一个奖励:

@staticmethod
def from_other_datastructure(json_data: str) -> 'MyThing':
return MyThing(
[int(d) for d in json_data.split(',')]
)

https://www.python.org/dev/peps/pep-0484/#forward-references

关于python-3.x - 注释 Python3 中静态方法的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40371082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com