Метод класса не изменяет значение переменной класса - PullRequest
0 голосов
/ 16 июня 2019

Метод класса, не изменяющий переменную класса

class Employee:

    raise_amount = 1.04


    def __init__(self,first,last,pay):
        self.first = first
        self.last = last
        self.pay = pay
        self.email = first+'.'+last+'@company.com'

    def fullname(self):
        return ('{} {}'.format(self.first,self.last))

    def apply_raise(self):
        self.pay = (self.pay * raise_amount)


employee_1=Employee('Bling','Blong',50000)
employee_2=Employee('Test','User',60000)


print (employee_1.pay)
employee_1.apply_raise
print (employee_1.pay)

После того, как я применил метод повышения к employee_1, следующая строка должна распечатать увеличенную зарплату. Но это все еще показывает старую зарплату 50000.

Ответы [ 2 ]

1 голос
/ 16 июня 2019

В этом фрагменте кода,

 raise_amount = 1.04 
 def __init__(self,first,last,pay):
        self.first = first
        self.last = last
        self.pay = pay
        self.email = first+'.'+last+'@company.com'

Добавьте self.raise_amount = 1.04 к __init__() и удалите raise_amount = 1.04

self ключевое слово используется для ссылки на экземпляр класса, а без self это означает, что это просто локальная переменная. В этой функции

    def apply_raise(self):
        self.pay = (self.pay * raise_amount)

Изменить переменную raise_amount на self.raise_amount

И, наконец, за пределами класса, измените employee_1.apply_raise на employee_1.apply_raise()

Чтобы вызвать метод, используйте скобки () в конце

0 голосов
/ 16 июня 2019

Здесь вы допустили 2 ошибки в коде: Ошибка 1. Здесь, в

 def apply_raise(self):

    self.pay = (self.pay * raise_amount)

должно быть self.raise_amount

Ошибка 2. При вызове функции

print (employee_1.pay)

  employee_1.apply_raise

  print (employee_1.pay)

Здесь вы должны добавить '()' в конце employee_1.apply_raise, чтобы сделать employee_1.apply_raise ()

Изначально функция apply_raise () не вызывалась, поэтому приращения не было.

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