2014-12-20 88 views
1

我正在unorderable类型:ShiftSupervisor()< INT()当我运行与Employee类的 ShiftSupervisor子类中的以下的程序。在这个小类中,我想根据在主程序中输入的年销售额来确定奖金$。类型错误:unorderable类型:ShiftSupervisor()<INT()

#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() 
+0

'bonus_rate'在*'ShiftSupervisor'里面,所以第一个('sales')参数就是实例本身。你的意思是'self.sales'? – jonrsharpe

+0

我没有使用self.sales,但带来了“销售”,因为在这 - > get_bonus_rate(销售):而不是这样做 - > get_bnous_rate(self): – AtxTom

回答

0

Python方法的第一个参数始终是类的实例,传统上命名为“self”。要访问类的实例成员,您需要使用'self'。 名称'的语法。

def bonus_rate(self): 
    if self.sales < 10000: 
      .... 
+0

谢谢你。你和上面的johnsharpe澄清了这一点。 – AtxTom

相关问题