这是我的Employee
班:
class Employee:
def __init__(self, first, last, pay):
self.first = first # Instance Variable
self.last = last # Instance Variable
self.pay = pay # Instance Variable
self.email = first + '.' + last + '@gmail.com' # Instance Variable
def fullname(self): #method inside the class
return '{} {}'.format(self.first, self.last)
def apply_raise(self):
self.pay = int(self.pay * 3 )
emp_1 = Employee('Corey', 'Schafer' , '5000')
emp_1.apply_raise()
print(emp_1.pay)
我想在调用方法5000 * 3 = 15000
之后得到结果apply_raise
,但我却得到了3次这样的5000次结果:
500050005000
答案 0 :(得分:2)
您应该使用此:
self.pay = int(self.pay)*3
您正在做的是将字符串乘以3次,这意味着将字符串紧挨着3次!! 然后将结果转换为整数! 这是代码运行的顺序:
self.pay * 3 -> 500050005000 (as a string)
int(self.pay * 3 ) -> 500050005000 (as an int)
self.py
是字符串:
self.pay = str(int(self.pay)*3)
答案 1 :(得分:2)
通过将薪水括在撇号中将其初始化为字符串。
python中的String * int是有效的操作,它将string重复int值的次数。您将在输出中得到什么。
如果您希望薪水为数字,请在初始化对象时删除撇号。然后当然会发生数字乘法。
您正在尝试将结果转换为int,但是首先应确保该参数已经是:
self.pay = int(self.pay) * 3