【问题标题】:Class object does not update empty list类对象不更新空列表
【发布时间】:2019-11-17 00:15:27
【问题描述】:

我正在尝试自己解决这个问题。问题要求为员工信息编写一个类,然后要求用户输入该信息,最后打印输入的信息。

我想使用两个for 循环,一个用于获取信息,一个用于打印信息。不幸的是,打印for 循环不起作用。

class Employee:
    def __init__(self, name, id_num, department, job):
        self.__name = name
        self.__id_num = id_num
        self.__department = department
        self.__job = job

    # setters
    def set_name(self,name):
        self.__name = name
    def set_id(self,id_num):
        self.__id_num = id_num
    def set_department(self,department):
        self.__department = department
    def set_job(self,job):
        self.__job = job

    # getters
    def get_name(self):
        return self.__name
    def get_id(self):
        return self.__id_num
    def get_department(self):
        return self.__department
    def get_job(self):
        return self.__job

def main():

    employee_list = []

    for i in range(2):
        name = input('What is the name of the employee? ')
        id_num = float(input('What is the ID number of the employee? '))
        department = input('What is the department where the employee works? ')
        job = input('What is the job title of the empoyee? ')

        personnel = Employee(name,id_num,department,job)

        employee_list.append(personnel)
    return employee_list


    for item in employee_list:
        print(item.get_name())
        print(item.get_id())
        print(item.get_department())
        print(item.get_job())
        print()


main()

【问题讨论】:

  • 顺便说一句,你的风格在这里不是很pythonic。看起来您正在编写“python 中的 java”。不要编写 getter 和 setter,它们不是必需的,只会增加不必要的混乱。不要使用双下划线,使用单下划线表示该属性不是公共接口的一部分。双下划线名称修饰是为了防止子类中的名称冲突。
  • @juanpa.arrivillaga 感谢 cmets 的风格。我正在从“从 python 开始”这本书中自学。在第 449 页上,它说要在 Python 中隐藏属性,我们使用双下划线。我也不知道单下划线也可以。

标签: python loops class object


【解决方案1】:

您需要在 main() 函数中删除以下行:

return employee_list

这会导致您的 main 停止运行而没有到达打印 for 循环。

【讨论】:

    猜你喜欢
    • 2019-01-11
    • 1970-01-01
    • 2018-01-28
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多