Python中如何将类方法的运行结果用于另一个方法的计算?
问题排查与修复方案
错误点汇总
- 实例化对象的代码放在了类定义之前:Python为顺序执行逻辑,执行
employee1 = Employee(...)时Employee类还未完成定义,会直接抛出名称未定义的错误。 hourly_rate方法返回值错误:return print(xxx)实际返回的是print函数的返回值None,而非计算得到的时薪数值,后续拿None做乘法运算会直接报错。- 实例方法调用语法错误:调用
self.hourly_rate时不需要手动传入self参数,实例方法会自动把当前对象作为第一个参数传入,多传参数会触发参数数量不匹配的报错。
修复后完整代码
# 先完成类定义,再进行实例化操作 class Employee: def __init__(self, employee_number, name, daily_rate, days_worked, overtime_hours, cash_advance, days_absent): self.employee_number = employee_number self.name = name self.daily_rate = daily_rate self.days_worked = days_worked self.overtime_hours = overtime_hours self.cash_advance = cash_advance self.days_absent = days_absent def hourly_rate(self): # 直接返回计算得到的时薪数值,不要包裹print return self.daily_rate / 8 def monthly_rate(self): return self.daily_rate * self.days_worked def overtime_pay(self): # 调用实例方法不需要手动传self参数 return self.hourly_rate() * self.overtime_hours # 类定义完成后再实例化对象 employee1 = Employee("001", "Joss Rees", 700, 24, 4, 500, 1) # 功能测试 print(employee1.hourly_rate()) # 输出时薪:87.5 print(employee1.overtime_pay()) # 输出加班费:350.0
补充说明
如果需要保留方法内的打印逻辑,可以先计算数值、完成打印后再返回结果,示例如下:
def hourly_rate(self): rate = self.daily_rate / 8 print(f"时薪计算结果为:{rate}") return rate
内容的提问来源于stack exchange,提问作者Rin Yuu
相关产品推荐
相关产品推荐

