gpt4 book ai didi

python - 如何在 PyCharm 解析器的文档字符串中指定类或函数类型

转载 作者:太空狗 更新时间:2023-10-29 20:30:28 25 4
gpt4 key购买 nike

我经常使用 Pycharm 文档字符串类型解析器来指定方法参数和返回、属性或实例变量的类型。如果它几乎一直有效,我有一个小问题告诉 PyCharm 我正在给一个函数或一个类作为参数/属性/...

这是一个简短的例子:

class Bar:

def __init__(self, bar):
"""
:type bar: str
"""
print bar

class Foo:
"""
:type my_class: Bar.__class__
"""

def __init__(self, cinstance=Bar):
"""
:type cinstance: Bar.__class__
"""
self.my_class = cinstance

def run(self):
# it should print an unexpected type warning, but it doesn't.
self.my_class(2)

如果我只是用 Bar 而不是 Bar.__class__,当然 PyCharm 会告诉我 Bar 不能被调用。那么如何告诉他我正在给他上课呢?

请注意,使用 @classmethod 装饰器,PyCharm 可以毫无问题地理解我们在谈论类而不是实例。

这是我的尝试:

Attempt with <code>Bar.__name__</code>

Attempt with <code>Bar.__class__</code>

Attempt with <code>Bar</code>

最佳答案

PyCharm 支持告诉我以下内容:

As PyCharm developer said: You cannot distinguish classes and instances in type hints. The name of a class in a type hint means that an instance of that class is expected. If your function accepts the class itself, your options are either not to use type hints at all or use the 'type' as a class name. Anyway, there won't be any useful code completion in these cases. See also https://youtrack.jetbrains.com/issue/PY-11615.

指定一个参数的唯一方法是一个类是使用:type arg: type,但是完成不会很好地工作。目前没有其他办法。

关于python - 如何在 PyCharm 解析器的文档字符串中指定类或函数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31342382/

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