使用多个参数初始化构造函数

2024-06-08 20:21:27 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图在数据库中保存日志时,TypeError: __init__() takes exactly 1 argument (5 given)出现了这个错误。在

logs_transactions = Logs_transactions('test', 'test', 910000000, current_user.id)
db.session.add(logs_transactions)
db.session.commit()

class Logs_transactions(db.Model):
    __tablename__ = 'logs_transactions'
    id = db.Column(db.Integer, primary_key=True)
    type = db.Column(db.String(100))
    reference = db.Column(db.String(500))
    phone_number = db.Column(db.Integer)
    user_id = db.Column(db.Integer, db.ForeignKey('users_user.id'))

    def __init__(self, **kwargs):
        super(User, self).__init__(**kwargs)

我知道我可以用这样的方法:

^{pr2}$

但是如果我有很多参数,这种方法很烦人。所以我认为上面的构造函数是等价的,但显然不起作用。基本上我想避免自我xxx对于所有参数。在


Tags: 方法testselfiddbstringinitsession
1条回答
网友
1楼 · 发布于 2024-06-08 20:21:27

两者并不相等。kwargs接受关键字,您传递的是位置参数。SQLAlchemy模型已经有一个使用kwargs的初始化器,您不需要提供自己的初始化器。在

Logs_transaction(type='test', reference='test', ...)

相关问题 更多 >