使用 attrs 对子类进行 Pycharm 类型提示

Posted

技术标签:

【中文标题】使用 attrs 对子类进行 Pycharm 类型提示【英文标题】:Pycharm typehint on subclass using attrs 【发布时间】:2019-02-20 22:07:08 【问题描述】:

Pycharm 正在抱怨 MyClass 实例出现意外参数。有没有办法解决这个问题?

import attr

@attr.s
class _Super:
    """ My Super class"""
    x: str = attr.ib(validator=attr.validators.instance_of(str))

@attr.s
class MyClass(_Super):
    """ My Sub class"""
    y:str = attr.ib(validator=attr.validators.instance_of(str))

x = MyClass(x="a", y="b")  # (x variable) Pycharm Typehint: "Unexpected argument"

【问题讨论】:

了解您的 PyCharm 版本以及 pip freeze 命令的输出不会很差,不是吗? 您使用的是哪个 python 版本(解释器)?我无法重现您对 PyCharm 2018.2 和 PyCharm 2018.1 的问题(尽管 attrs support 仅在 2018.2 及更高版本中可用) 我正在使用 Python 3.6、Pycharm 2018.2 和 attrs 18.1.0(所以不会让我粘贴整个 pip freeze) 【参考方案1】:

这是 PyCharm 2018.2 中的一个错误

https://youtrack.jetbrains.com/issue/PY-28506

【讨论】:

以上是关于使用 attrs 对子类进行 Pycharm 类型提示的主要内容,如果未能解决你的问题,请参考以下文章

Silverlight 中使用安全关键构造函数对透明类型进行子类化的安全规则

如何在 JavaScript 中对字符串进行排序

pycharm怎么配置

Pycharm配置

如何使用pycharm对函数进行测试

一种将 NamedTuple 子类化以进行类型检查的方法