【发布时间】:2014-04-30 20:59:24
【问题描述】:
:rtype: 指定这是返回对象的类型。
因此,当我在以下 sn-p 中创建对象 obj 时,我收到来自 IDE 的警告 cls is not callable,因为 IDE 预计 cls 是 object 类型为 SomeAbstractClass,并且我想要SomeAbstractClass 本身。
IDE 是正确的,因为这是默认行为。但是如何指定我返回的是一个类,而不是一个类的实例?
指定 type 而不是 SomeAbstractClass 会有所帮助,但这不是解决方案,因为没有进一步的自省可用。
def class_selector(data):
"""
:rtype: SomeAbstractClass
:return: Return some class based on given parameters
"""
return get_from.get(data.name)
cls = class_selector(data)
obj = cls(data.more_data)
同时我通过在对象创建后添加""":type: SomeAbstractClass""" 解决了这个问题,但这并没有取消警告,这是一个肮脏的解决方案。
顺便说一下,我说的是 Python 2.x。
【问题讨论】:
-
既然
:rtype:注解是用来表示返回值的type(),又因为type(SomeAbstractClass)是type,你或许应该使用:rtype: type? -
感谢您的输入,但我已经在问题中指定了为什么这种方法不起作用,type = 默认对象类的创建者。没有特定于类的属性,因此不允许进一步的自省和验证,这仅向 IDE 提供知识,即它是某个类,而不是特定的类
-
你有没有想过或找到更多关于为 Pycharm 编写 Python 文档字符串的建议?最近真的很喜欢 Pycharm,希望看到更多编写好的文档字符串来帮助 Pycharm 检查代码的示例。
-
我知道这个问题已经存在两年了,但这里是受支持的文档字符串类型提示列表jetbrains.com/help/pycharm/2016.1/… 你可以使用的是
type[SomeAbstractClass]这是你的类参数化的类型 -
请看一下这个 python 问题,Guido 解释道:github.com/python/typing/issues/58
标签: python pycharm restructuredtext docstring