在python 3中,我可以设置参数并返回类型注释。例:
class Graph:
def __init__(self, V: int, E: int, edges: list):
pass
@classmethod
def fromfile(cls, readobj: type(sys.stdin)):
pass
def V(self) -> int:
pass
def E(self) -> int:
pass
问题是我无法使用当前类(图形)的返回类型进行注释,该类型尚未定义。例:
class Graph:
def reverse(self) -> Graph:
pass
这段代码有错误
def reverse(self) -> Graph:
NameError: name 'Graph' is not defined
这些注释对于记录文档以及允许IDE识别参数和返回类型都非常有用=>启用自动完成功能
UPD:所以我想到的是这是不可能的,或者需要一些我不喜欢的技巧,所以我决定使用def reverse (self) -> 'Graph':
可以理解的文档,尽管这违反了规则。缺点是它不适用于IDE自动完成功能。
所以现在过了一会儿,我可以说我做出的决定是使用-> 'Graph'
而不是-> Graph
。它不能使我的IDE(PyCharm)能够以这种方式识别类型,但对于文档目的它已经足够好了。
我可以使用的另一种可能的解决方案是在运行时更改批注,但这不能解决文档问题-您将不想在源中间寻找类型声明…
问题的根源在于在实际定义类之前识别类对象。这在python中根本不可能做到。
在Python3中,我可以创建参数和返回类型注释。例子: 问题是我无法使用当前类(Graph)的返回类型创建注释,该类尚未定义。例子: 这段代码有错误 这些注释对于记录和允许IDE识别参数和返回类型都非常有用= UPD:所以我想到的是,这要么是不可能的,要么需要一些我不喜欢的技巧,所以我决定只使用
我有一个任务,我们要创造一个石头,纸,剪刀的游戏。它指定我们必须创建一个抽象的“工具”类,其中有三个子类:“ToolRock”、“ToolPaper”、“ToolScissors”。抽象类应该有一个“+getFeagnet():tool”函数(用斜体写成)。 我的假设是做一个像这样的抽象函数: RockTool类被指定为具有函数“+get弱点():tool”(不是用斜体写的),我的想法是创建一个覆
在python 3.x中,通常使用函数的返回类型注释,例如: “void”类型的正确注释是什么? 我正在考虑三种选择:
我正试图从使用observable转换下面的observable代码。使用可管道操作符创建到。 我已经尝试了下面的方法,但是我得到了一个转换错误,无法转换可观察的类型。看不见的。如有任何帮助,我们将不胜感激。
现在我学习Java已经有一段时间了,但有一个概念我很难理解。我习惯了这样的方法 我知道上面的方法会返回一个整数或字符串,无论你想要什么数据类型 现在我在问自己,上述方法的回报类型到底是什么。我如何使用返回的东西做其他事情? 我还看到人们将对象作为这样的参数传递给方法 这又是怎么回事?在什么情况下,上述“风格”是必要的,需要避免什么陷阱? 使用对象而不是整数之类的值让我感到困惑。
我正在讨论设计我们的API(Stream vs Collection作为返回类型)的最佳方式。这篇文章中的讨论非常有价值。 @BrainGotez的答案提到了一个条件,即集合优于流。我不太明白这意味着什么,谁能帮我举个解释的例子? 当有很强的一致性要求时,您必须生成移动目标的一致快照 我的问题是,具体而言,“强一致性要求”和“移动目标的一致快照”在现实应用中意味着什么?