#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'
(Вы должны передать числовой тип, а не строковый)