【发布时间】:2014-12-21 03:25:38
【问题描述】:
当我使用以下程序运行以下程序时,我得到了不可排序的类型: Employee 类的 ShiftSupervisor 子类。在这个子类中,我想根据输入主程序时的年销售额来确定奖金 $。
#This Employee class holds general data about employess and will
# end up as the superclass for this example.
class Employee:
def __init__(self, emp_name, emp_number):
self.emp_name = emp_name
self.emp_number = emp_number
def set_emp_name(self, emp_name):
self.emp_name = emp_name
def set_emp_number(self, emp_number):
self.emp_number = emp_number
def get_emp_name(self):
return self.emp_name
def get_emp_number(self):
return self.emp_number
#The ShiftSupervisor class holds the general data from superclass Employee
# as well as Employee shift time and pay rate making it a subclass
# of Employee.
class ShiftSupervisor(Employee):
def __init__(self, emp_name, emp_number, annual_salary, sales):
#call the superclass
Employee.__init__(self, emp_name, emp_number)
self.annual_salary = annual_salary
self.sales = sales
def set_annual_salary(self, salary):
self.annual_salary = salary
def set_sales(self,sales):
self.sales = sales
def get_annual_salary(self):
return self.annual_salary
def get_sales(self):
return self.sales
#Determining the bonus based on the sales figures.
def bonus_rate(sales):
if sales <10000:
bonus_rate = sales*0.10
if sales >=10000 and sales <= 14999:
bonus_rate = sales*0.12
if sales >=15000 and sales <=17999:
bonus_rate = sales*0.14
if sales >=18000 and sales <= 21999:
bonus_rate = sales*0.16
else:
bonus_rate = sales*0.18
return bonus_rate
# The main program
import shiftsupervisor
def main():
first = input("Enter the shift supevisor's first name: ")
last = input("Enter the the shift supevisor's last name: ")
emp_number = input("Enter the shift supevisor's ID number. ")
salary = float(input("What is the annual salary of the shift supevisor? $"))
sales = float(input("What are the annual sales for the shift? $"))
emp_name = first + " " +last
supervisor = shiftsupervisor.ShiftSupervisor(emp_name, emp_number, salary, sales)
print()
print('\t Shift Supervisor Information')
print('---------------------------------------------------------------')
print("Supervisor Name: \t\t", supervisor.get_emp_name())
print("Employee Number:\t\t", supervisor.get_emp_number())
print("Annual Salary for the supervisor is: \t$ " , format(supervisor.get_annual_salary(),',.2f'),sep='')
print("Annual Bonus for the supervisor is: \t$ ", format(supervisor.bonus_rate(), ',.2f'),sep = '')
main()
【问题讨论】:
-
bonus_rate是 insideShiftSupervisor,所以第一个 (sales) 参数是实例本身。你的意思是self.sales? -
我确实使用了 self.sales,但带来了“销售”,如下所示 -> get_bonus_rate(sales): 而不是这样做 -> get_bnous_rate(self):