【已解决】TypeError: __init__() takes 1 positional argument but 3 were given
问题描述
TypeError: __init__() takes 1 positional argument but 3 were given
类型错误:__init__()函数需要1个参数,但给出了3个参数
问题分析
本人练习的代码中,其父类__init__()函数中的参数只有一个(个人原因少写了!),而在其子类实际调用的的参数需要三个,所以在调用的时候出现此类报错。
查找其他问题解决方法时,发现大概有以下错误原因导致此类相关报错:
函数传参时,父类或子类参数少些或多写,应都检查一遍(本人错误),例如,类初始化时__init__(self)只有一个参数,其子类的__init__(self,type,no,company)有三个参数,type和no是继承父类参数(附本人代码及修改后代码),在父类中type,no未写上。
函数书写错误,例如__init_(),__int__(),__init()等这些错误书写
代码检测
class Car(object): def __init__(self): self.type = type self.no = no def start(self): pass def stop(self): passclass Taxi(Car): def __init__(self,type,no,company): super().__init__(type,no) self.company = company def start(self): print('乘客您好!') print(f'我是{self.company}出租车公司,我的车牌是{self.no},请问您要去哪里?') def stop(self): print('目的地到了,请您付款下车,欢迎再次乘坐!')if __name__ == '__main__': taxi = Taxi('上海大众','京B8879','长城') taxi.start() taxi.stop()
代码报错
TypeError: __init__() takes 1 positional argument but 3 were given
代码修改
对__init__()函数进行修改。
class Car(object): def __init__(self,type,no): self.type = type self.no = no def start(self): pass def stop(self): pass
成功解决问题。
来源地址:https://blog.csdn.net/m0_69555166/article/details/129778991
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341