Ошибка питон - Ссылка на локальную переменную перед назначением

Рейтинг: 0Ответов: 1Опубликовано: 12.02.2023

Делал я библиотеку, которая использует другие библиотеки. Запустил код, и выскочила такая ошибка:

Вот код:

SECOND = 1
HOUR = 3600
MINUTE = 60
DAY = 86400

WeekList = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

REPLY_IN_REQUIREMENTS = '''Basic requirements not met. 
Go to the command line and enter the text: 
pip install time
pip install datetime'''
check_true = None

class REQUIREMENTS:
        check_true = 0
        def check(self):
            try:
                if check_true == 0:
                    check_true = 1
                    from time import sleep
                    from datetime import datetime
                    import sys
                if check_true == 1:
                    pass
            except ModuleNotFoundError:
                for i in range(1, 100):
                    print('Fatal % i: ' + REPLY_IN_REQUIREMENTS)
                    sys.exit()
b = REQUIREMENTS()



def wait_in_seconds(secs):
    b.check()
    sleep(secs)
    
def wait_in_minutes(minutes):
    b.check()
    for i in range(0, minutes):
        sleep(MINUTE)

def wait_in_hours(hours):
    b.check()
    for i in range(0, hours):
        sleep(HOUR)

def wait_in_days(days):
    b.check()
    for i in range(0, days):
        sleep(DAY)

def str_cur_weekday():
    b.check()
    now = datetime.now()
    current_weekday = now.isoweekday()
    cd_kill_one = current_weekday - 1
    str_current_weekday = WeekList[cd_kill_one]
    print(str_current_weekday)

Помогите решить проблему, пожалуйста!

Ответы

▲ 1Принят

Ты определил check_true = None, но негде его не использовал. check_true = 0 которое ты использовал в классе так же не используется, тк если она определенна в классе и ты хочешь использовать его в функции определенной в этом классе, то должен явно к нему обращаться self.check_true. Не используй глобальные переменные в классе, это нарушит принцип инкапсуляции.

Лучше передавай check_true в качестве аргумента функции:

class REQUIREMENTS:
    def check(self, check_true):
        # тут ты можешь работать с check_true
        return check_true

check_true = None
b = REQUIREMENTS()

print(b.check(check_true))