Skip to main content
 首页 » 编程设计

python之隐藏参数在哪里

2025年05月04日13飞鱼

我在这里调用了这个函数:

import test_hosts 
 
test_hosts.LocalTestHost(mst, port, local_ip, remote_if_mac, remote_if_ip, service_port) 

当我运行它时,解释器失败,并说我将 6 个参数传递给一个接收 7 个参数的函数。

LocalTestHost 是一个类,其构造函数采用一个 self 参数和其他六个参数:总共有 7 个参数。这是它的声明:

class LocalTestHost: 
 
    def __init__(self, mst, port, local_ip, remote_if_mac, remote_if_ip, service_port): 
        ... 

我已经盯着这段代码看了好几个小时了,但我找不到问题所在。当我按原样运行时,它失败了,因为我传递了 6 个参数,这太少了,如果我用添加的参数调用构造函数只是为了看我仍然可以计数,它说我传递了 8 个参数,这太少了许多。

请您参考如下方法:

您粘贴的代码片段看起来不错。正如其他人所说的那样,要找到问题,您应该找到仍然存在 bug 的最少数量的代码。

我的建议是

(1) 检查模块 test_hosts 是为您的 Python 版本编写的,并且它确实是正在导入的文件

(2) 将 class LocalTestHost: def __init__(... 函数复制到您的文件并尝试从那里调用它。如果您正确设置了参数的#,它会引发类似 NameError 的错误。

(3) 如果上述功能适合您,请使用运行时自省(introspection)检查 test_hosts.LocalTestHost.__init__() 签名。有人可能会通过例如改变它__init__ = staticmethod(__init__) 某处(定义静态函数的旧方法)。

请告诉我们进展如何!