Gokberk :
I tried to create a basic class example by myself. However, I get an error from line 51 that I mentioned by #ERROR next to the code. Error information given below. Also, if I try to get info by show_info from worker class, there is no error on program. I couldn't understand tha reason of that situation.
Can you help me about how to solve the problem. Thank you to all I'm begginer for coding. Sorry if the main issue is so basic.
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
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...")
Error is given below.
manager1 = manager.show_info_manager()
TypeError: show_info_manager() missing 1 required positional argument: 'self'
Saimon :
You messed up something in your code which I corrected.
You were trying to call the show_info_manager()
on manager1
instance in the wrong way.
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
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.show_info_manager() # Corrected
break
else:
print("Please Enter a Proper Value...")
Guess you like
Origin http://10.200.1.11:23101/article/api/json?id=383585&siteId=1