2017-12-29 11 views
-3

방금 ​​파이썬 과정에서 OOP를 시작했습니다. 나는 이름과 성으로 매우 단순한 'Employee'라는 클래스를 생성하는 작은 프로그램을 작성하려고합니다. 내가하려고하는 일은 다음과 같다. 이름과 성을 묻고 이름과 성으로 구성된 튜플 목록을 반환하는 함수가있다. 나는 사용자가 몇개의 이름을 넣을지 모르겠다. 그래서리스트가 얼마나 많은 튜플을 구성하는지 알지 못한다. 내 질문은 이제 각 튜플에 대해 'Employee'클래스를 만드는 함수를 작성하는 방법입니다. y = Employee(raw_input('name '), raw_input('surname ')) 이 객체의 목록을 반환하지만 내가 그들을 도달하는 방법을 모른다 : 파이썬의 목록에서 튜플을 사용하여 클래스를 인스턴스화하기

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 

나는 다음과 같은 시도 :

는 프로그램입니다. 그것들은 목록에 있습니다. 목록을 호출하면 개체의 위치 목록 만 얻을 수 있습니다. 그러나 함수를 호출하는 방법을 모르겠습니다.

나는 이틀 동안이 일에 매달 렸습니다. 어떤 도움이라도 대단히 감사하게 될 것입니다!

감사합니다.

답변

0

당신은 이라는 튜플로 namesurname을 읽습니다. Employee의 인스턴스를 생성하고 생성자 __init__()에 이름과 성을 통과

employee = Employee(*y) 

을 : 내가 생각하는 당신이 원하는 것은이 같은 튜플 y에서 Employee 클래스의 인스턴스를 생성하는 것이다.

그래서 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 
+0

답변 주셔서 감사 많은,하지만 난 당신이 무슨 뜻인지 이해가 안 돼요. 코드에 사용자 의견을 추가하려면? 두 명 이상의 직원을 추가하고 싶지만 얼마나 많은 직원인지 알고 싶지 않으면 작동합니까? (이 메서드는 실제로 들여 쓰기 오류입니다.) – AlexanderBeBrave

+0

확장 된 대답을 참조하십시오. – BoarGules

+0

감사합니다. 지금은 분명합니다. 이것은 나를 많이 도왔습니다! – AlexanderBeBrave

관련 문제