我开始更多地使用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中,通常使用函数的返回类型注释,例如: “void”类型的正确注释是什么? 我正在考虑三种选择:
这是简化的代码 那么如何在类型注释中使用名称Myclass呢?我的TypeScript版本是3.2.2
功能注释:PEP-3107 背景:我是PyCharm用户,在Linux上拥有CPython 3.4x。我发现注释函数参数和返回类型很有帮助。当我使用这些方法时,IDE可以更好地提示我。 问题:对于自链接方法,如何注释方法返回值?如果我使用类名,Python会在编译时抛出一个异常: 示例代码: 作为一个技巧,如果我把放在类声明的前面,它就会起作用。然而,我不知道这种技术是否有意想不到的负面副作用。
问题内容: 在python 3中,我可以设置参数并返回类型注释。例: 问题是我无法使用当前类(图形)的返回类型进行注释,该类型尚未定义。例: 这段代码有错误 这些注释对于记录文档以及允许IDE识别参数和返回类型都非常有用=>启用自动完成功能 UPD:所以我想到的是这是不可能的,或者需要一些我不喜欢的技巧,所以我决定使用 可以理解的文档,尽管这违反了规则。缺点是它不适用于IDE自动完成功能。 问题答
问题内容: 我如何使用类型提示来注释一个返回总是返回两个值的函数:a和a ?提示很接近,除了将返回值类型限制为元组,而不是生成器或其他可迭代类型。 我主要是好奇的,因为我想注释一个用于返回多个值的函数,如下所示: 通常函数喜欢做这样的事情(它返回一个元组),但我喜欢的类型暗示要足够灵活,以取代发电机或列表或别的东西返回的元组。 问题答案: 您总是返回 一个 对象;使用只需返回一个元组。 是的,完全
我正在编写一些Python代码,其中必须使用父子设计,如下所示: 但是Python提出了一个,并抱怨没有定义