如何解决这个多态性和继承的python代码中的错误
班级员工是家长班级如何解决这个多态性和继承的python代码中的错误,python,python-3.x,Python,Python 3.x,班级员工是家长班级 Condition if position=="Staff": emp.dayWorked=input("Day worked in a month:") //error emp.pay() emp.display() elif position=="Executive": exe.dayWorked=i
Condition
if position=="Staff":
emp.dayWorked=input("Day worked in a month:")
//error
emp.pay()
emp.display()
elif position=="Executive":
exe.dayWorked=input("Day worked in a month:")
exe.pay()
emp.display()
elif position=="Clerks":
clk.dayWorked=input("Day worked in a month:")
clk.addHours=input("Overtime:")
clk.pay()
emp.display()
请帮我解决这个错误,我是一个初学者,我需要一个指导
如果可以请添加一些评论行让我容易理解
这是一个python程序,用于计算员工、主管和职员的总工资,但必须使用多态性和继承方法
//错误
回溯(最近一次调用):文件“C:/Users/User/PycharmProjects/lab8python/lt3.py”,
第58行,emp.pay()文件“C:/Users/User/PycharmProjects/lab8python/lt3.py”,第12行,在pay return self.payRateself.hoursWorkedself.dayWorked AttributeError中:
“Employee”对象没有属性“payRate”您的代码中有几个问题:
class Employee:
def __init__(self):
self.payRate = 7
self.hoursWorked = 8
self.dayWorked = 0
self.name = ""
self.position = ""
self.addHours = 0
def insert(self, name, position, dayWorked, addHours):
self.name = name
self.position = position
self.dayWorked = dayWorked
self.addHours = addHours
def pay(self):
return self.payRate * self.hoursWorked * self.dayWorked
def display(self):
print("Total salary:RM{.2f}".format(self.pay()))
class Executive(Employee):
def __init__(self):
super().__init__()
self.payRate = 25
self.allowance = 500
def insert(self, name, position, dayWorked, addHours):
self.name=name
self.position=position
self.dayWorked=dayWorked
self.addHours = addHours
def pay(self):
return self.payRate*self.hoursWorked*self.dayWorked*self.allowance
class Clerks(Employee):
def __init__(self):
super().__init__()
self.payRate = 25
self.ot = 10.5
def insert(self, name, position, dayWorked, addHours):
self.name=name
self.position=position
self.dayWorked=dayWorked
self.addHours=addHours
def pay(self):
return self.payRate*self.hoursWorked*self.dayWorked*(self.addHours*self.ot)
emp=Employee()
exe=Executive()
clk=Clerks()
while True:
name=input("Name:")
position=input("Position(Staff,Executive,Clerks):")
if position=="Staff":
emp.dayWorked=input("Day worked in a month:")
emp.pay()
emp.display()
elif position=="Executive":
exe.dayWorked=input("Day worked in a month:")
exe.pay()
emp.display()
elif position=="Clerks":
clk.dayWorked=input("Day worked in a month:")
clk.addHours=input("Overtime:")
clk.pay()
emp.display()
\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
\uuuu init\uuuu(self)
函数中启动。
例如,变量如下:self.dayWorked
,self.position
,等等
class Employee:
def __init__(self):
self.payRate = 7
self.hoursWorked = 8
self.dayWorked = 0
self.name = ""
self.position = ""
self.addHours = 0
def insert(self, name, position, dayWorked, addHours):
self.name = name
self.position = position
self.dayWorked = dayWorked
self.addHours = addHours
def pay(self):
return self.payRate * self.hoursWorked * self.dayWorked
def display(self):
print("Total salary:RM{.2f}".format(self.pay()))
class Executive(Employee):
def __init__(self):
super().__init__()
self.payRate = 25
self.allowance = 500
def insert(self, name, position, dayWorked, addHours):
self.name=name
self.position=position
self.dayWorked=dayWorked
self.addHours = addHours
def pay(self):
return self.payRate*self.hoursWorked*self.dayWorked*self.allowance
class Clerks(Employee):
def __init__(self):
super().__init__()
self.payRate = 25
self.ot = 10.5
def insert(self, name, position, dayWorked, addHours):
self.name=name
self.position=position
self.dayWorked=dayWorked
self.addHours=addHours
def pay(self):
return self.payRate*self.hoursWorked*self.dayWorked*(self.addHours*self.ot)
emp=Employee()
exe=Executive()
clk=Clerks()
while True:
name=input("Name:")
position=input("Position(Staff,Executive,Clerks):")
if position=="Staff":
emp.dayWorked=input("Day worked in a month:")
emp.pay()
emp.display()
elif position=="Executive":
exe.dayWorked=input("Day worked in a month:")
exe.pay()
emp.display()
elif position=="Clerks":
clk.dayWorked=input("Day worked in a month:")
clk.addHours=input("Overtime:")
clk.pay()
emp.display()
请记住,上述代码虽然有效,但质量肯定会有所提高。我认为您是python新手,因为似乎存在大量缩进错误,注释应该使用“#”而不是“/”。。。但我认为您遇到的问题是一个简单的语法错误,初始化或承包方法是用双下划线定义的
def __init__(self):
#code here
您得到的错误是什么?请使用所有相关详细信息更新问题,以再现错误和错误本身。第12行-返回self.payRateself.hoursWorkedself.dayWorkedline 58-emp.pay()请更新问题,而不是在comments@HariGanes这是给你一些建议。正如我提到的,代码需要进一步改进。Stackoverflow不是代码编写服务。我可以在正确的方向上帮助你,所以你可以付出更多的努力。我尝试改进,只是计算不起作用。我正在做的只是,如果这个答案是有帮助的,请投票并选择作为最佳答案,以帮助遇到类似问题的其他人