我正在编写一个包含一个对象的库,该对象允许对其某些方法进行方法链接。我想为这个库的用户提供一个简单的方法来知道是否有任何特定的方法支持链接(并且“用户”包括提供自动完成的IDE)。
根据这个问题和这个问题,通过在支持链接的方法调用结束时html" target="_blank">返回自己
可以很容易地完成链接。
然而,这些问题都没有解决如何向用户表明一个方法支持链接(除了明显的docstring注释)。如下面的示例代码所示,我试图添加一个类型提示,但是由于当我试图在类型提示中使用类< code>A时,它还没有完全定义,Python无法实例化该类的一个实例。
class A():
def chain(self) -> A: # `self` is of type A, so `-> A` is an appropriate return type
print("Chaining!")
return self # Enable method chaining
>>> A().chain().chain().chain() # Should print "Chaining!" three times.
Traceback (most recent call last):
File "scratch.py", line 1, in <module>
class A():
File "scratch.py", line 3, in A
def chain(self) -> A:
NameError: name 'A' is not defined
指示方法支持Python中的链接的有效方法是什么?
理想的答案是使用类型提示或其他允许IDE支持自动完成的构造。
class A():
def chain(self) -> 'A': # `self` is of type A, so `-> A` is an appropriate return type
print("Chaining!")
return self
A().chain().chain().chain()
在您的代码中,A没有用引号定义,因此它被计算为变量
是否可以将类型提示传播到重写方法? 比方说,我有以下课程: 当我在pycharm不建议对属性/方法进行自动完成,但它为选择了正确的提示。显而易见的解决方法是只复制docstring,但我将有几十个不同的子体,因此这并不实用。 我正在使用PyCharm 3.1。1、社区版和专业版都会受到影响。 它是python本身完全缺少的东西,还是仅仅在PyCharm中?
从继续https://stackoverflow.com/a/51132333/936293,为什么以下操作不起作用? 最后一行导致编译器错误: “{email:string;}”类型的参数不可分配给“MemberModel”类型的参数。键入“{email:string;}”不可分配给类型“Document”。类型“{email:string;}”中缺少属性“increment”。 < code
问题内容: 我想为工具提示创建一个自定义CSS类,该类将包裹长度超过25-30的字符串。通常这样长的文本不适合tootltip文本区域。 而且是否有使用[工具提示ui.bootstrap.tooltip)进行此操作?就像使用自定义CSS类来获取所需的输出。 这是简单的CSS工具提示 这是相同的代码片段: 问题答案: CSS解决方案 对于眼前的问题有一个非常简单的解决方案。我基本上添加的是以下CSS
我在Python 3中有以下代码: 但是我的编辑器(PyCharm)说引用不能解析(在方法中)。我应该如何指定我期望的返回类型是类型? 编辑:我认为这实际上是一个问题。它实际上在警告和代码完成中使用了这些信息。 但是如果我错了,请纠正我,并且需要使用其他语法。
问题内容: 我对Java和android完全陌生,因此我尝试从android和数据库中找到有用的示例。我发现这个博客有一个项目: http://saigeethamn.blogspot.com/2009/10/android-developer-tutorial- part-12.html 我运行了该项目,它运行正常,但是我试图创建一个新项目,以将代码复制并粘贴到其中,但这不起作用:( 我在这条线
问题内容: 如果我定义一个小python程序为 我收到回溯错误 我要弄清楚的是,如何在不实例化对象的情况下动态地将类方法设置为类? 编辑: 这个问题的答案是 返回以下输出 问题答案: 您可以通过简单地分配给类对象或通过对类对象的setattr动态地将类方法添加到类中。在这里,我使用python约定,即类以大写字母开头,以减少混乱: