Python调用Employee类计算月薪方法输出函数地址问题如何解决
问题分析与修复
你的代码存在3处逻辑错误,逐一说明如下:
- 错误1:未正确调用实例方法
代码中kellys_monthly_salary = Employee.calculate_monthly_salary只是把类的方法对象直接赋值给了变量,没有执行方法调用,所以打印结果是方法的内存地址而非计算结果。实例方法需要绑定实例对象调用,不能直接用类名调用(除非手动传入实例参数)。 - 错误2:方法内未通过
self引用实例属性calculate_monthly_salary方法中直接写annual_salary,Python会将其识别为未定义的局部变量,运行时会抛出NameError,实例属性必须加self.前缀访问。 - 错误3:月薪计算公式错误
年薪转月薪需要除以12,你写的除以0.12会得到远大于预期的结果,和你预期的3500.0不符。
修正后代码
class Employee: """ Creates an instance of Employee """ def __init__(self, name, annual_salary): self.name = name self.annual_salary = annual_salary def calculate_monthly_salary(self): # 加self访问实例属性,除以12计算月薪 return self.annual_salary / 12 class CustomerServiceEmployee(Employee): """ Creates an instance of CustomerServiceEmployee """ def __init__(self, name, annual_salary, department): super().__init__(name, annual_salary) self.department = department cs_manager = CustomerServiceEmployee("Kelly Johnson", 42000, "Customer Service") # 用实例调用方法,加()执行调用 kellys_monthly_salary = cs_manager.calculate_monthly_salary() print(kellys_monthly_salary)
运行结果
3500.0
内容的提问来源于stack exchange,提问作者Jose
相关产品推荐
相关产品推荐

