【已解决】TypeError: __init__() takes 1 positional argument but 3 were given

在Python编程中遇到TypeError: __init__()函数参数错误,原因为父类只接受1个参数,但子类调用时传递了3个。解决方案是检查并修正父类与子类的__init__()方法参数,确保一致性。通过修改代码,成功解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

TypeError: __init__() takes 1 positional argument but 3 were given

类型错误:__init__()函数需要1个参数,但给出了3个参数

问题分析

本人练习的代码中,其父类__init__()函数中的参数只有一个(个人原因少写了!),而在其子类实际调用的的参数需要三个,所以在调用的时候出现此类报错。

查找其他问题解决方法时,发现大概有以下错误原因导致此类相关报错:

1.函数传参时,父类或子类参数少些或多写,应都检查一遍(本人错误),例如,类初始化时__init__(self)只有一个参数,其子类的__init__(self,type,no,company)有三个参数,type和no是继承父类参数(附本人代码及修改后代码),在父类中type,no未写上。

2.函数书写错误,例如__init_(),__int__(),__init()等这些错误书写

代码检测

class Car(object):
    def __init__(self):
        self.type = type
        self.no = no
    def start(self):
        pass
    def stop(self):
        pass

class 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

成功解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值