首页 > 解决方案 > PyCharm。意外的参数 可能的被调用者

问题描述

我在 PyCharm 中编写并得到一个错误(在“func(dict_data)”行中):意外的参数(s)可能的被调用者:A.foo(dict_data:dict)A.bar(dict_data:dict)。

是 PyCharm 错误还是我做错了什么?

PyCharm 2020.3

    class A:
    
        def __init__(self):
            self.functions = {
                "foo": self.foo,
                "bar": self.bar
            }
    
        def typing(self, dict_data: dict):
            for key, value in dict_data.items():
                if key in self.functions:
                    func = self.functions[value["type"]]
                    func(dict_data)
    
        def foo(self, dict_data: dict):
            print(dict_data)
    
        def bar(self, dict_data: dict):
            print(dict_data)
    
    
    class B:
    
        def __init__(self):
            self.data = {
                "foo": {"type": "foo"},
                "bar": {"type": "bar"}
            }
    
        def get(self) -> dict:
            return self.data
    
    
    if __name__ == "__main__":
    
        b = B()
        data = b.get()
        a = A()
        a.typing(data)

在此处输入图像描述

在此处输入图像描述

标签: pythonpycharmarguments

解决方案


func 实际上是您的代码中的一个变量,但是您将它作为一个在那里不存在的函数来调用,因此 PyCharm 正在猜测您可能想要使用哪个函数来代替它可以容纳 dict_data 作为它的参数。

1

图中的这个'def function_name(arguments:datatype)'是函数的识别方式,但你的ss有关键字'Union',因此func的数据类型是Union。


推荐阅读