在Employee类中调用apply_raise方法无结果,为何未实现4%薪资增长?
问题原因与解决方案
你的apply_raise方法调用后没有返回结果,核心原因是这个方法没有定义return语句——它只是在内部修改了实例的self.pay属性,Python中没有return的函数/方法默认返回None,所以你调用时看不到任何返回结果。
两种解决方式:
方式一:给方法添加返回语句
修改apply_raise方法,让它返回更新后的薪资:def apply_raise(self): self.pay = int(self.pay * 1.04) return self.pay # 返回更新后的薪资这样调用
emp_1.apply_raise()时,就会直接得到增长后的薪资数值。方式二:调用方法后访问实例属性
因为apply_raise已经修改了实例的pay属性,调用方法后直接访问该属性就能拿到结果:# 创建实例 emp_1 = Employee("Alice", "Smith", 50000) # 调用涨薪方法 emp_1.apply_raise() # 查看更新后的薪资 print(emp_1.pay) # 输出52000
对比你的fullname方法,它明确用return返回了拼接后的全名,所以调用时能拿到结果;而apply_raise只做了内部修改,没有返回值,这就是两者的区别。
内容的提问来源于stack exchange,提问作者Arindam ghosh
相关产品推荐
相关产品推荐

