Python Forum

Full Version: Class Information Help
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
# Main worker class
class worker():

    def __init__(self, name, salary, department):
        print("__init__ function of worker class.")
        self.name = name
        self.salary = salary
        self.department = department

    def show_info_worker(self):
        print("show_info function of worker class")
        print("""Name: {}\nSalary: {}\nDepartment: {}""".format(self.name, self.salary, self.department))

    def change_depart(self, new_depart):
        print("change_depart function of worker class")
        self.department = new_depart


# Main manager class
class manager(worker):

    def __init__(self, name, salary, department, responsibilty):
        # super() function takes input from worker class
        super().__init__(name, salary, department)
        print("__init function of manager class")
        self.responsibilty = responsibilty

    def show_info_manager(self):
        print("show_info function of manager class")
        return """Name: {}\nSalary: {}\nDepartment: {}\nResponsibility: {}""".format(self.name, self.salary,
                                                                                    self.department,
                                                                                    self.responsibilty)

    def raise_salary(self, increase_salary):
        print("raise_salary function of manager class")
        self.salary += increase_salary


employee_name = input("Please Enter Employee Name: ")
employee_salary = input("Please Enter Employee Salary: ")
employee_department = input("Please Enter Employee Department: ")
while True:
    check_manager = int(input("""Please Select the Position of Employee\n1. Worker\n2. Manager"""))
    if check_manager == 1:
        worker1 = worker(employee_name, employee_salary, employee_department)
        worker1.show_info_worker()
        break
    elif check_manager == 2:
        manager_responsibility = input("Please Enter Manager Responsibility: ")
        manager1 = manager(employee_name, employee_salary, employee_department, manager_responsibility)
        manager1 = manager.show_info_manager() # ERROR!!!
        break
    else:
        print("Please Enter a Proper Value...")
I get an error in line 51

Error:
Traceback (most recent call last): __init__ function of worker class. __init function of manager class File "C:/Users/Gökberk/Desktop/Python/Intermediate Exercise/Class Second Example.py", line 51, in <module> manager1 = manager.show_info_manager() TypeError: show_info_manager() missing 1 required positional argument: 'self'
I don't know how to fix that error.
the situation is that I want to print manager class information after all input done.
Thank you for all of you for help
You need to use the variable name instead of the class name. It looks like a typo.

manager1 = manager1.show_info_manager()
the first argument of method show_info_manager must be 'self'