Python Database类__init__参数缺失报错的原因及解决方法
问题原因与解决方案
为什么会出现这个报错?
这是Python类实例化时的典型误区:你直接调用了__init__构造方法,而非通过类名创建实例。
__init__的第一个参数self是Python自动传入的——当你用类名(参数)的方式创建实例时,Python会把刚生成的对象本身作为self传递给__init__。但你直接写database.__init__(...)时,Python不会自动帮你注入self,这就导致原本需要4个参数(self+你传入的3个参数)的方法,只收到了3个参数,自然会提示"缺少一个参数"。
如何修改?
只需要把app.py里的调用代码改成类实例化的标准写法就行:
你当前的错误代码:
dataset = database.__init__(configs['dict'], 'table-name','third-var')
修改后的正确代码:
dataset = database(configs['dict'], 'table-name','third-var')
这样Python会自动处理self的传递,__init__就能接收到所有需要的参数,报错也就消失了。
额外提醒
顺便说一句,__init__本身没有返回值(默认返回None),你之前的写法即使不报错,dataset也会是None。用正确的实例化方式,dataset才会是database类的一个实例对象,后续可以正常访问它的属性和方法。
内容的提问来源于stack exchange,提问作者iraza-n
相关产品推荐
相关产品推荐

