Функции NameError

Я возился с некоторым кодом, пытаясь создать функцию для планирования работы. Однако я застрял и задался вопросом, может ли кто-нибудь помочь? Спасибо

class Work_plan(object):
    def __init__(self,hours_work,work_len, work_des):
        self.hours_work = hours_work
        self.work_len = work_len
        self.work_des = work_des

        work_load = []
        hours_worked = []
        if hours_worked > hours_work:
            print "Too much work!"
        else:
            work_load.append(work_des)
            hours_worked.append(work_len)
            print "The work has been added to your work planning!"

work_request = Work_plan(8, 2, "task1")
Work_plan
print work_load

появляется ошибка: NameError: имя 'work_load' не определено


person Mrv    schedule 21.05.2015    source источник


Ответы (1)


Вы определили переменную work_load внутри __init__ класса, поэтому вы не можете получить к ней доступ за пределами этой области.

Если вы хотите иметь доступ к work_load, сделайте его атрибутом для объектов класса Work_plan и получите к нему доступ, выполнив object.work_plan

Например:

class Work_plan(object):
    def __init__(self,hours_work,work_len, work_des):
        self.hours_work = hours_work
        self.work_len = work_len
        self.work_des = work_des

        self.work_load = []
        self.hours_worked = []
        if hours_worked > hours_work:
            print "Too much work!"
        else:
            self.work_load.append(work_des)
            self.hours_worked.append(work_len)
            print "The work has been added to your work planning!"

work_request = Work_plan(8, 2, "task1")
Work_plan
print work_request.work_load
person rafaelc    schedule 25.05.2015
comment
Спасибо за ответ! Когда я использую ваш код, он выводит: Трассировка (последний последний вызов): Файл w.p_suggested_answer.py, строка 16, в ‹module› work_request = Work_plan(8, 2, task1) Файл w.p_suggested_answer.py, строка 9, в init if hours_worked › hours_work: NameError: глобальное имя 'hours_worked' не определено - person Mrv; 27.05.2015
comment
@Mrv каждый раз используйте self.hours_work вместо hours_work и self.hours_worked вместо self.hours_worked - person rafaelc; 27.05.2015
comment
Благодарю вас! Я бы сдался без твоей помощи. - person Mrv; 28.05.2015
comment
@Mrv Не забудьте принять ответ как лучший ответ, если он вам помог :)! Ваше здоровье - person rafaelc; 28.05.2015