Gokberk:
Traté de crear un ejemplo básico de clase por mí mismo. Sin embargo, me da un error de la línea 51 que he mencionado por #ERROR junto al código. Información de error indica a continuación. También, si lo intento de obtener información por show_info de la clase trabajadora, no hay error en el programa. No podía entender tha razón de esa situación.
¿Me pueden ayudar sobre cómo resolver el problema. Gracias a todos que soy principiante para la codificación. Lo siento si el principal problema es tan básico.
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 es la siguiente.
manager1 = manager.show_info_manager()
TypeError: show_info_manager() missing 1 required positional argument: 'self'
Saimon:
En mal estado algo en su código que he corregido. Que estaba tratando de llamar a la show_info_manager()
de manager1
instancia en el camino equivocado.
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...")