【问题标题】:Python Class Printing Information IssuePython 类打印信息问题
【发布时间】:2020-04-01 14:30:05
【问题描述】:

我尝试自己创建一个基本的类示例。但是,我从代码旁边的#ERROR 提到的第 51 行收到一个错误。

下面给出的错误信息。另外,如果我尝试通过 show_info 从工人班获取信息,程序上没有错误。我无法理解这种情况的原因。

你能帮我解决这个问题吗?谢谢你们 我是编码的初学者。

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...")

错误如下。

manager1 = manager.show_info_manager()
TypeError: show_info_manager() missing 1 required positional argument: 'self'

【问题讨论】:

  • 提示:遵循the naming conventions 并使用 CamelCase 作为您的类名。这有助于避免此类问题 ;-)

标签: python python-3.x error-handling


【解决方案1】:

您在代码中弄乱了我更正的内容。 您试图以错误的方式调用 manager1 实例上的 show_info_manager()

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...")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    相关资源
    最近更新 更多