【发布时间】: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 中隐藏属性,我们使用双下划线。我也不知道单下划线也可以。