我在这里调用了这个函数:
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__) 某处(定义静态函数的旧方法)。
请告诉我们进展如何!
