首页 > 解决方案 > 将元组作为变量传递

问题描述

我通过参数传递一个元组,我收到以下错误。我在互联网上搜索,工作方法是正确的。有人可以看看吗?

人物类

from datetime import datetime
from sqldata import Sqldata


class Person:
    def __init__(self, addr, client):
        self.addr = "192.12"
        self.client = "demorun"
        self.name = none

    def set_name(self, name):
        self.name = name
        values = (self.addr, self.name, str(datetime.now()))
        Sqldata.create_connclient(values)

Sqldata类将数据写入数据库,

import sqlite3
from sqlite3 import Error
import os

fileDir = os.path.dirname(os.path.realpath(__file__))
filename = "dbConnClients.db"
db_file = os.path.join(fileDir,  "database\\" + filename)


class Sqldata:
    def __init__(self):
        self.conn = None
        try:
            self.conn = sqlite3.connect(db_file)
        except Error as e:
            print(e)

    def create_connclient(self, vdata):
        print(vdata)
        conn = self.conn
        sqlquery = ''' SELECT id FROM ConnClients WHERE name = ? '''
        cur = conn.cursor()
        cur.execute(sqlquery, vdata[1])

错误:

File "...person.py", line 23, in set_name
    Sqldata.create_connclient(vdata)
TypeError: create_connclient() missing 1 required positional argument: 'vdata'

标签: pythonclassarguments

解决方案


如果你想将元组中的两个值作为两个参数传递selfvdata你应该这样写。

Sqldata.create_connclient(*values)

星号解包元组。但是,请阅读 justahuman 的回复,因为我认为他们可能发现了更深层次的问题。


推荐阅读