找回密码
 会员注册
查看: 34|回复: 0

已解决Python解决TypeError__init__()missing1requiredpositionalargument‘comment‘报错

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
64454
发表于 2024-9-11 20:28:01 | 显示全部楼层 |阅读模式
😎作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。🤓同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。🌼同时洲洲已经建立了程序员技术交流群,如果您感兴趣,可以私信我加入社群,可以直接vx联系(文末有名片)v:bdizztt🖥随时欢迎您跟我沟通,一起交流,一起成长、进步!点此也可获得联系方式~本文目录一、问题背景二、定位错误原因原因一:构造函数参数缺失原因二:错误的类继承原因三:错误的参数顺序三、解决方案方案一:确保构造函数参数完整方案二:正确处理类继承方案三:确保参数顺序正确过程中的注意事项总结一、问题背景在Python中,TypeError通常发生在函数或构造函数调用时参数不匹配的情况下。特别是,TypeError:init()missing1requiredpositionalargument:'comment’这个错误表明在创建某个类的实例时,构造函数__init__()缺少了一个必需的位置参数comment。这种情况通常发生在定义类时,构造函数需要接收一个或多个参数,但在创建类的实例时没有提供足够的参数。二、定位错误原因原因一:构造函数参数缺失错误示例:classComment:def__init__(self,comment):self.comment=comment#缺少必需的参数new_comment=Comment()#引发TypeError123456self代表实例化对象本身①、类的方法内部调用其他方法时,我们也需要用到self来代表实例②、类中用def创建方法时,就必须把第一个参数位置留给self,并在调用方法时忽略它(不用给self传参)③、类的方法内部想调用类属性或其他方法时,就要采用self.属性名或self.方法名的格式原因二:错误的类继承如果一个类继承自另一个需要特定参数的类,但没有正确传递这些参数,也会引发这个错误。错误示例:classBase:def__init__(self,comment):self.comment=commentclassDerived(Base):def__init__(self):super().__init__()#没有传递必需的参数给Base的构造函数#引发TypeErrornew_derived=Derived()123456789101112原因三:错误的参数顺序如果构造函数的参数顺序与调用时提供的不一致,也可能导致这个错误。错误示例:classComment:def__init__(self,comment,author):self.comment=commentself.author=author#参数顺序错误new_comment=Comment("Greatpost!","Alice")#引发TypeError,如果定义中author在comment之前1234567'运行运行三、解决方案方案一:确保构造函数参数完整在创建类的实例时,确保提供所有必需的参数。正确示例:new_comment=Comment("Thisisagreatarticle!")#正确提供必需的参数1方案二:正确处理类继承如果类继承自另一个类,确保在子类的构造函数中正确传递所有必需的参数给父类的构造函数。代码示例:classDerived(Base):def__init__(self,comment):super().__init__(comment)#正确传递参数给Base的构造函数new_derived=Derived("Nicework!")#正确创建Derived的实例12345方案三:确保参数顺序正确在调用构造函数时,确保参数的顺序与定义时一致。正确示例:new_comment=Comment("Alice","Greatpost!")#假设author在comment之前定义1过程中的注意事项我们来看看一个错误示例:classBook:def__init__(self,name,author,comment,state=0):self.name=nameself.author=authorself.comment=commentself.state=state#创建一个Book类的子类FictionBookclassFictionBook(Book):def__init__(self,name,author,comment,state=0,type_='虚构类'):#继承并定制父类的初始化方法,增加默认参数type='虚构类',让程序能够顺利执行。Book.__init__(name,author,comment,state=0)self.type=type_def__str__(self):status='未借出'ifself.state==1:status='已借出'return'类型:%s名称:《%s》作者:%s推荐语:%s\n状态:%s'%(self.type,self.name,self.author,self.comment,status)book=FictionBook('囚鸟','冯内古特','我们都是受困于时代的囚鸟')print(book)1234567891011121314151617181920212223显示报错:line13,in__init__Book.__init__(name,author,comment,state=0)TypeError:__init__()missing1requiredpositionalargument:'comment'1234解决方案:Book.__init__里面加上selfBook.__init__(self,name,author,comment,state=0)self.type=type_1234总结📝Hello,各位看官老爷们好,我已经建立了CSDN技术交流群,如果你很感兴趣,可以私信我加入我的社群。📝社群中不定时会有很多活动,例如每周都会包邮免费送一些技术书籍及精美礼品、学习资料分享、大厂面经分享、技术讨论谈等等。📝社群方向很多,相关领域有Web全栈(前后端)、人工智能、机器学习、自媒体副业交流、前沿科技文章分享、论文精读等等。📝不管你是多新手的小白,都欢迎你加入社群中讨论、聊天、分享,加速助力你成为下一个大佬!📝想都是问题,做都是答案!行动起来吧!欢迎评论区or后台与我沟通交流,也欢迎您点击下方的链接直接加入到我的交流社群!~跳转链接社区~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-27 03:21 , Processed in 1.321237 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表