我对python相当陌生,在继承类方面遇到了问题。这是一个计算机编程课程的在线介绍,我没有资源来找出我的代码哪里出了问题。代码如下:
class Employee:
def __init__(self, employeeName, employeeShift):
self.__name = employeeName
self.__number = employeeShift
def set_name(self, nam):
self.__name = nam
def set__number(self, num):
self.__number = num
# Accessor methods
def get_name(self):
return self.__name
def get_number(self):
return self.__number
# ProductionWorker class that inherited the Employee class
class ProductionWorker(Employee):
def __init__(self, shift, payRate):
self.__shift_number = shift
self.__pay_rate = payRate
def set_shift_number(self, shift):
self.__shift_number = shift
def set_pay_rate(self, pay):
self.__pay_rate = pay
# Accessor methods
def get_shift(self):
return self.__shift
def get_shift(self):
if self.__shift_number = '1':
s = 'Day shift'
else self.__shift_number = '2':
s = 'Night shift'
return s
def get_pay(self):
return self.__pay
def get_pay(self):
if self.__pay_rate <= 5:
p = 7.50
elif self.__pay_rate > 5 and self.__pay_rate <= 15:
p = 13.50
else self.__pay_rate >= 20:
p = 20
return p
# main module
def main():
# Prompts the user for employee name, shift and pay rate
employeeName = raw_input("Please enter the employee name: ")
print "Please enter which shift the employee works."
employeeShift = input("1 for day shift, 2 for night shift: ")
payRate = input("How long has the employee worked here? ")
# Creates object of ProductionWorker
worker = ProductionWorker(employeeName, employeeShift, payRate)
# Displays information
print "Employee name:", worker.get_name()
print "Employee shift:", worker.get_shift()
print "Employee pay rate:", worker.get_pay_rate()
# calls main module
main()
它告诉我在ProductionWorker
类中有一个语法错误,在def get_shift()
下,这里有{
Python使用
==
进行比较测试:=
如果用于变量赋值。在编辑:
你实际上还有一些问题。在我开始之前,这里有一个你的脚本的固定版本:
^{pr2}$下面是我所做的:
将所有的
else
替换为elif
(因为else
不支持条件)。除了
__init__
中的那些,我删除了每个双下划线。这是因为双下划线在Python中有着特殊的含义。向
name
添加了一个name
参数(因为您在此行中传入了一个名称:worker = ProductionWorker(employeeName, employeeShift, payRate)
)。就在
ProductionWorker.__init__
声明的下面,我添加了这一行来给ProductionWorker
一个name属性:self.name = name
。除了@iCodez指出的bug之外,您还没有定义}在调用它时会引发一个错误。在
self.__shift
是什么,因此{您还没有定义
self.__pay
是什么,所以get_pay()
将抛出一个NameError
。在我假设您指的是分别返回}的方法。在
self.__shift_number
和{哈哈,实际上现在我仔细看了一下,你对那些方法进行了双重定义,所以你立即用更正确的代码覆盖你的错误代码。我建议你删除你的错误代码。在
在get_shift函数中应该使用'==',而不是'='。在
=是赋值运算符
==是比较运算符
更正代码:
相关问题 更多 >
编程相关推荐