你能帮我让我的子类中的方法正常工作吗?

问题描述 投票:0回答:1
class CommissionPaid(Employee):
    def __init__(self, name, dept, base_rate, sales):
        super().__init__(name, dept)
        self.__base_rate = base_rate
        self.__sales = sales
        
    def get_base_rate(self):
        return self.__base_rate

    def get_sales(self):
        return self.__sales

    def get_employee_type(self):
        return 'Commission Paid'
    
    def set_base_rate(self, base_rate):
        self.__base_rate = base_rate

    def set_sales(self, sales):
        self.__sales = sales
        
    def pay(self, base_rate = 0.0, sales = 0.0):
        if sales > 10000:
            pay = sales * .02 + base_rate
            return pay
        elif sales >= 5000 and sales <=10000:
            pay = sales * .01 + base_rate
            return pay
        elif sales < 5000:
            return base_rate
    
    def __str__(self):
        return f'self.get_employee_type() \t {super().__str__()} \t {self.pay(base_rate, sales)}'

################################################## #################################################### ### 主程序

from employees import CommissionPaid, HourlyPaid

def main():
    employee1 = CommissionPaid('Fname1 Lname1', 'Marketing', 500, 30000)
    employee2 = CommissionPaid('Fname2 Lname2', 'Sales', 1000, 8000)
    employee3 = HourlyPaid('Fname3 Lname3', 'Accounting', 55, 20.5)
    employee4 = HourlyPaid('Fname4 Lname4', 'Finance', 35, 30)
    employee_list = [employee1, employee2, employee3, employee4]
    return employee_list

def print_employee_list(employee_list):
    print('Employee Type \t Employee Name \t Department    \t Weekly Pay')
    print('_____________ \t _____________ \t ___________ \t _____________')
    print(employee_list[0].__str__())
    print(employee_list[1].__str__())
    print(employee_list[2].__str__())
    print(employee_list[3].__str__())
    print('\n',total_pay())

def total_pay(employee_list):
    total_pay = 0
    for index in employee_list:
        total_pay += employee_list[index].pay()
    return f'Total Weekly Pay: ${total_pay}'

employee_list = main()
print(employee_list[0])
print_employee_list(employee_list)

**当我尝试运行上面的程序来实例化我创建的子类时,我收到此错误。我觉得这可能很容易解决,但我需要帮助 **

Traceback (most recent call last):
  File "F:/Classes/Python/Python II/COSC 1437/Programming Assignments/2/assignment2_Carissa_Sims.py", line 32, in <module>
    print(employee_list[0])
  File "F:/Classes/Python/Python II/COSC 1437/Programming Assignments/2\employees.py", line 63, in __str__
    return f'self.get_employee_type() \t {super().__str__()} \t {self.pay(base_rate, sales)}'
NameError: name 'base_rate' is not defined

我尝试初始化.pay()方法中的参数,但仍然没有解决问题。

python class parameters subclass superclass
1个回答
0
投票

你的函数`str是错误的

def __str__(self):
        return f'self.get_employee_type() \t {super().__str__()} \t {self.pay(base_rate, sales)}'

应该从

self.pay(base_rate, sales)
->
self.pay(self.__base_rate, sales)

更改
def __str__(self):
        return f'self.get_employee_type() \t {super().__str__()} \t {self.pay(self.__base_rate, sales)}'
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.