AttributeError: объект «Сотрудник» не имеет атрибута «WorkingHours» - PullRequest
0 голосов
/ 13 июня 2018

Почему возникает ошибка атрибута?Атрибут WorkingHours не найден?

class Employee:
    def numberofWorkingHours(self):
        self.WorkingHours = 45

    def printnumberofWorkingHours(self):
        print(self.WorkingHours)

class Trainee:
 def numberofWorkingHours(self):
     self.WorkingHours = 60

emp = Employee()
emp.printnumberofWorkingHours()

Ответы [ 2 ]

0 голосов
/ 13 июня 2018
class Employee:

    def __init__(self):
        self.WorkingHours = 45

    def printnumberofWorkingHours(self):
        print(self.WorkingHours)

class Trainee:
    def numberofWorkingHours(self):
        self.WorkingHours = 60

emp = Employee()
emp.printnumberofWorkingHours()

Заменить метод numberofWorkingHours на __init__

0 голосов
/ 13 июня 2018

Единственное место, где вы устанавливаете self.WorkingHours, находится внутри тела метода numberofWorkingHours.

Так как в вашей демонстрации вы никогда не вызываете метод, атрибут WorkingHours не установлен.

Вы можете либо заранее вызвать numberofWorkingHours, либо перепроектировать свой класс.Лучшим подходом было бы установить self.WorkingHours = 45 в методе __init__.(Вы могли бы также рассмотреть не жесткое кодирование значения, а передачу его __init__ в качестве необязательного аргумента, например, def __init__(self, WorkingHours=45): ....)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...