Python Contact类__init__修正后出现参数错误的问题求助
问题原因解析
1. 错误写法(___init__)能运行的原因
Python中类的构造函数必须严格命名为__init__(前后各2个下划线)。当你写成___init__(前后3个下划线)时,这个方法只是个普通自定义方法,不会被Python当作构造函数调用。
此时Python会自动使用继承自object类的默认构造函数,它的签名是def __init__(self):——仅接收self一个参数。你调用Contact('dummy.xml')时虽然传了第二个参数,但因为默认构造函数不会处理额外参数,且你的核心业务逻辑(比如读取XML文件)可能在其他方法实现,所以程序能正常运行并输出结果。
2. 修正后报错的原因
你修正为__init__(file_path)时遗漏了self参数。Python中类的实例方法(包括构造函数)必须把self作为第一个参数(代表实例本身,由Python自动传递)。
调用Contact('dummy.xml')时,Python会自动把新创建的Contact实例作为第一个参数传给__init__,再加上你传入的'dummy.xml',总共是2个参数,但你的__init__只定义了file_path这1个参数,因此触发TypeError,提示“Contact.__init__() takes 1 positional argument but 2 were given”。
正确的构造函数写法
def __init__(self, file_path): # 初始化逻辑示例 self.file_path = file_path # 后续读取XML等操作
内容的提问来源于stack exchange,提问作者Paul-ET
相关产品推荐
相关产品推荐

