почему мой код класса не активируется, тогда def в классе вносит некоторые изменения в экземпляр?

#python

#python

Вопрос:

def apply_raise не активируется .. почему? пожалуйста, помогите мне

 class Employee():
    raise_amount = 1.1
    raise_percentage = 10
    def __init__(self,name,education,age,wage):
        self.name = name
        self.education = education
        self.age = age
        self.wage = wage
    def __str__(self):
        return "안녕하세요.저는 %s 입니다. 저의 학력은 %s 입니다." %(self.name, self.education)

    def apply_raise(self,raise_percentage,wage):
        print('%d%% 인상되어 연봉은 %s입니다.'%(self.raise_percentage, self.wage))
        self.wage = int(self.wage * self.raise_amount)
        self.raise_percentage = (self.raise_amount-1)*100
        return

taedragon = Employee('Taedragon', '로스쿨졸업', 31, '20000')
taedragon.apply_raise(10, 22000)
  

Ошибка:

 self.wage = int(self.wage * self.raise_amount)
TypeError: can't multiply sequence by non-int of type 'float'
  

Комментарии:

1. Я полагаю, если вы посмотрите на то, как вы инициализируете объект: Employee('Taedragon', '로스쿨졸업', 31, '20000') у вас есть строка для wage вместо числового типа. Итак, попробуйте: Employee('Taedragon', '로스쿨졸업', 31, 20000)

Ответ №1:

Причина в этой строке:

 taedragon = Employee('Taedragon', '로스쿨졸업', 31, '20000')
  

Вы передаете wage='20000' , который является строкой. Вы не можете умножать строки с плавающими значениями.

Сделайте это вместо:

 taedragon = Employee('Taedragon', '로스쿨졸업', 31, 20000)
  

Ответ №2:

При создании экземпляра Employee ваш последний аргумент должен быть 20000 вместо '20000'

(Вы должны передать числовой тип, а не строковый)