#python #oop
Вопрос:
Это приложение для отслеживания привычек дает ошибку имени «имя не существует». Значения передаются классу, но при вызове create он выдает ошибку имени.
class habit(object):
def __init__(self, name, period):
self.name = name
self.period = period
#self.hab_oper = hab_oper
def create(self):
self.name = name
self.period = period
#self.hab_oper = hab_oper
day = ftime(period)
db = sqlite3.connect("../habit/habit.db")
cur = db.cursor()
#query to incert input name to create habit in database of selected pereiod
cur.execute(f"INSERT INTO {period} ('name', 'first') VALUES ('{name}',{day})")
db.commit() #makes changes to database permanent
cur.close() #closes connection to database
db.close()
print(f" Habit name is {name} in {period}")
cre_hab = habit("reading", "daily")
cre_hab.create()
Комментарии:
1. В
create()
вас естьself.name = name
иname
не определено в этой области (то же самое сperiod
). Что это должно делать, чего вы не делали в__init__()
(где это определено, потому что оно передается в качестве аргумента)?2. В create () я изменил его на name = self.name и период = self.период, который сейчас отлично работает
Ответ №1:
Эти две строки в create:
self.name = name
self.period = period
Задом наперед: вы имели в виду:
name =self.name
period = self.period