Мне нужно запросить таблицу и создать экземпляр класса Car для каждой строки в базе данных. Я достиг этого момента, но я получаю сообщение об ошибкеКак динамически создавать экземпляры класса в Python из sqlite
возвращение [Car (* строка) для строки в строках] TypeError: INIT() занимает 1-позиционное аргумент, но 7 получили ... Там 6 атрибутов к таблице автомобилей ... oy vey!
import sqlite3 as lite
def db_connect():
con = lite.connect('ins.sqlite')
with con:
cur = con.cursor()
cur.execute('select * from cars;')
rows = cur.fetchall()
for row in rows:
#return (row) #Use list comprehension to get all rows
return [Car(*row) for row in rows]
class Car:
def car_info(self):
'Add all the necessary methods and properties you want'
a = db_connect()
return a
def __init__(self, **kwargs):
self.variables = kwargs
def main():
x = Car() #Create a Object x
a = x.car_info()
ok = tuple(map(str, a)) #convert float data into string
print ('Make Model Model Displacement
Power Luxury')
print (' '.join(ok))
main()
ok, я понимаю, что вы имеете в виду .... поэтому я отредактировал код выше с init, теперь я получаю сообщение об ошибке [Car (* row) для строки в строках] ТипError: __init __() принимает 1 позиционный аргумент, но 7 дано – engr007
. Я обсуждал это в четвертом абзаце: «Еще одна серьезная проблема: вам нужно написать код для« Car .__ init __() », чтобы фактически создать экземпляр« Car »из строки.' __Init__() 'в классе' Car' должен принимать ряд аргументов, те же данные, которые будут отображаться в каждой строке из базы данных, а затем должны хранить каждый аргумент внутри 'self'. – steveha
Вы правы, это для проекта класса, однако, я очень новичок в python, поэтому моя структура кода не самая лучшая на этом языке. Я ценю вашу конструктивную критику, это очень полезно. Я понимаю это, когда я иду ... так что когда у меня будет хороший рабочий код, я уберу его, я думаю. ... так что вы думаете, что мой __init __(), где он принимает kwargs, не может работать с этим .... Нужно ли указывать аргументы для создания экземпляров? – engr007