为了账号安全,请及时绑定邮箱和手机立即绑定

警告:预期类型 [Class Name],改为 'Dict[str, int]'

警告:预期类型 [Class Name],改为 'Dict[str, int]'

喵喔喔 2022-06-22 15:35:05
我正在使用将字典作为输入的方法构建一个类,但 Pycharm 会显示警告。''' 预期类型 'TestClass',得到 'Dict[str, int]' 而不是 less... (⌘F1) 检查信息:此检查检测函数调用表达式中的类型错误。由于动态调度和鸭子类型,这在有限但有用的情况下是可能的。函数参数的类型可以在文档字符串或 Python 3 函数注释中指定 '''class TestClass:    def __getitem__(self, index):        return self[index]    def get_keys(self):        return list(self.keys())dict_input = {'a':123, 'b':456}TestClass.get_keys(dict_input)所以我在这里收到警告:TestClass.get_keys(dict_input)这个警告是什么意思,修复它的方法是什么?
查看完整描述

2 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

诸如您编写的方法称为“实例方法”。


self,接收者,应该是一个实例TestClass(否则,许多事情可能会出错,例如super)。


您可以定义get_keys为静态方法,或使用简单函数(不将其放入类中)。


class TestClass:

    @staticmethod

    def get_keys(s):

        return list(s.keys())

您可能需要阅读有关类的 Python 文档以获取更多详细信息。


查看完整回答
反对 回复 2022-06-22
?
九州编程

TA贡献1785条经验 获得超4个赞

为了具体回答您关于 Pycharm 警告的问题,您当前遇到的警告是由 Pycharm 检查代码中的类型引起的已知问题,因为 PyCharm 很困惑,因为它需要一个 TestClass 对象,但得到一个字典对象。

解决此问题的一种方法是禁用该特定警告类型,如从此处解释的那样

  1. 转到设置/首选项

  2. 在边栏中,单击检查

  3. 展开 Python 选项卡

  4. 向下滚动Incorrect Call Arguments并取消选中它

  5. 如果这不起作用,您可以取消选中Type Checker


另一个更优雅的方法,虽然我不确定它是否会解决这个 PyCharm 警告,但是在你的函数中添加一个装饰器,让 PyCharm 知道你的返回类型是一个字典。教程在这里,但您的文档字符串可能会包含以下内容:

"""
:rtype: Dict [str,int]
"""

顺便说一句,您可能应该在 get_keys 函数上使用@staticmethod装饰器,正如 Jean 所提到的,因为它接收一个对象并返回其键(并且我们不希望该对象在此过程中访问我们的 TestClass 数据)。


查看完整回答
反对 回复 2022-06-22
  • 2 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号