Class Method Unreachable

Question:

In the code is a class Company wherein is an employe_base, *which contains employee objects . With the function print_self_employees, I try to modify a list employees and print it.

class Company():
    def __init__(self, name, minimum_hiring_grades, required_work_experience_years,employee_leaves, employee_bonus_percent, employee_working_days) -> None:
        self.name = name
        self.minimum_hiring_grades = minimum_hiring_grades
        self.required_work_experience_years =  required_work_experience_years
        self.employee_leaves = employee_leaves
        self.employee_bonus_percent = employee_bonus_percent
        self.employee_working_days = employee_working_days
        self.employee_base = []
        self.employees = []

    def hire_employee(self, employee) -> None:
        if employee.grades_percent_average >= self.minimum_hiring_grades and employee.work_experience_years >= self.required_work_experience_years:
            print("You are hired!")
            self.employee_base.append(employee)
            employee.has_job = True
            employee.working_days = self.employee_working_days
            employee.bonus_percent = self.employee_bonus_percent
            employee.available_leaves = self.employee_leaves
            employee.salary_dollars = employee.grades_percent_average + employee.work_experience_years * 1000
            employee.id = employee
        else:
            print("You did not meet our requirements.")

    def give_leaves_employee(self, employee, leaves_required) -> None:
        if leaves_required <= 3 and employee.available_leaves - leaves_required >= 0:
            employee.available_leaves -=  leaves_required
            print("Leaves are granted.")
        else:
            print("Leaves can't be granted.")

    def print_self_employees(self):
        self.employees = [employee.name for employee in self.employee_base]  
        print(self.employees)

Here, print_self_employees produces no result instead of printing. I tried changing the print to just "hello", but that didn’t work either. The function seems to be completely unreachable, but has no indication of being so in my IDE VSCode. Could someone point out an error I seem to be missing

My code is called like so:

E = Company("E", 90, 5, 30, 25, 300)
r = Employee("r", 90, 5)
a = Employee("a", 91, 7)
a.apply_in_company(EY)
r.apply_in_company(EY)
E.print_self_employees
print(E.employee_base)
Asked By: PythonProgrammer

||

Answers:

You need to be calling the print function rather than referencing it. Try:

E.print_self_employees()
Answered By: jprebys
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.