我刚刚在我的Python课程中开始OOP。我正在尝试编写一个小程序,该程序创建名为"员工"的课程,非常简单,只有名字和姓氏。我要做的是以下内容:我有一个函数询问名称和姓氏,并返回由名称和姓氏组成的元组列表。我不知道用户将放置多少个名称,所以我不知道该列表组成了多少个元组。我现在的问题是如何编写一个为每个元组创建"员工"类的函数。
这是程序:
class Employee(object):
def __init__(self, name, surname):
self.name = name
self.surname = surname
print 'Employee created!'
print 'Welkom %s %s'%(name, surname)
def create_employee():
x = []
while True:
y = raw_input('Name: '),raw_input('Surname: ')
answer = raw_input('Do you want to add another employee? Yes or No ')
if answer == 'Yes' or answer == 'yes':
answer == True
else:
break
我尝试了以下内容:y = Employee(raw_input('name '), raw_input('surname '))
这返回了一个对象列表,但我不知道如何联系。它们在列表中,如果我调用列表,我只会获得一个带有对象位置的列表,但是我不知道如何在它们上调用函数。
我已经被困了两天了。任何帮助将不胜感激!
谢谢。
您正在将 name
和 surname
读取为称为 y
的元组中。我认为您想做的是从元组y
创建一个Employee
类的实例,例如:
employee = Employee(*y)
创建Employee
的实例并将名称和姓氏传递给构造函数__init__()
。
因此您的create_employee()
功能看起来像这样:
def create_employee():
x = []
while True:
y = raw_input('Name: '), raw_input('Surname: ')
employee = Employee(*y) # Create an instance of Employee from input
x.append(employee) # Save object in a list for future use
answer = raw_input('Do you want to add another employee? Yes or No ')
if answer == 'Yes' or answer == 'yes':
answer == True
else:
break
return x # Pass the list of objects back when user is finished
现在您需要使用创建的Employee
对象列表。
if __name__ == "__main__":
x = create_employee()
for employee in x:
print employee.name, employee.surname
输出是
Name: Joe
Surname: Bloggs
Employee created!
Welkom Joe Bloggs
Do you want to add another employee? Yes or No No
Joe Bloggs