这是我的代码:
w1 = ch8.Worker("Joe", 15)
print(w1.pay(35)) # Not implemented
w2 = ch8.SalariedWorked("Sue", 14.50)
print(w2.pay()) # 580.0
print(w2.pay(60)) # 580.0
w3 = ch8.HourlyWorker("Dana", 20)
print(w3.pay(25)) # 500
w3 = changeRate(35)
print(w3.pay(35)) # 875
这是我在文件ch8.py中实现的Worker,SalarieWorked和HourlyWorker类:
class Worker:
def __init__(self, worker_name="Unknown", hourly_pay_rate=0.0):
self.worker_name = str(worker_name)
self.hourly_pay_rate = float(hourly_pay_rate)
def changeRate(self, new_pay_rate):
self.new_pay_rate = float(new_pay_rate)
self.hourly_pay_rate = self.new_pay_rate
def pay(self, number_of_hours):
self.number_of_hours = number_of_hours
return "Not implemented"
class HourlyWorker(Worker):
def pay(self, number_of_hours):
self.number_of_hours = int(number_of_hours)
if self.number_of_hours > 40:
return (
40 * self.hourly_pay_rate
+ (self.number_of_hours - 40) * self.hourly_pay_rate * 2
)
return self.number_of_hours * self.hourly_pay_rate
class SalariedWorked(Worker):
def pay(self, number_of_hours=40):
self.number_of_hours = int(number_of_hours)
return 40 * self.hourly_pay_rate
这是我执行代码时得到的:
未实现
580.0
580.0
500.0
追溯(最近一次通话):
文件“ C:\ Users \ carol \ PycharmProjects \ ProblemasPraticos \ book_Intro_Computing_Using_Python \ Chapter 8 \ 8_Exercises.py”,第137行,在
中
w3 = changeRate(35)
NameError:名称'changeRate'未定义
有人可以帮助我了解为什么会出现此错误?
谢谢!
答案 0 :(得分:2)
您编写 w3.pay(25)
w3 = changeRate(35)
为什么不 w3.changeRate(35)
答案 1 :(得分:2)
您正在重写该功能。
致电时
w3 = ch8.HourlyWorker("Dana", 20)
您正在创建类型为 HourlyWorker的对象w3。
然后,您在编写w3 = changeRate(35)
这是不允许的。
尝试仅执行w3.changeRate(35)
而不是**w3 = changeRate(35)**
答案 2 :(得分:2)
changeRate
是Worker
类的一种方法,因此要使用它,您需要从类实例中调用它
示例:
w3.changeRate(35)
答案 3 :(得分:2)
changeRate()
是类Worker
的方法。因此,您必须通过类的实例来调用它。
类HourlyWorker
继承自类Worker
。因此,方法changeRate()
在类HourlyWorker
中可用。
要实现您的目标,请用以下行替换行w3 = changeRate(35)
:w3.changeRate(35)