Я создаю серверную часть для отслеживания привычек с помощью ООП, но получаю «Ошибка имени: имя не определено при вызове метода создания».

#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