2017-12-29 45 views
-3

私はPythonコースでOOPを開始しました。私は 'Employee'という名前のクラスを作成する小さなプログラムを作成しようとしています。名前と姓だけで非常にシンプルです。私がしようとしていることは、次のとおりです。名前と姓を求め、名前と姓からなるタプルのリストを返す関数があります。ユーザーがどれくらいの名前を入れるのか分からないので、リストのタプル数はわからない。私の質問は、各タプルに対して 'Employee'クラスを作成する関数を書く方法です。Pythonのリストからタプルを使用してクラスをインスタンス化する

これはプログラムです:

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 ')) これは、オブジェクトのリストを返しますが、その後、私はそれらに到達する方法がわかりません。それらはリストにあり、リストを呼び出すと、オブジェクトの位置を示すリストが取得されますが、関数の呼び出し方法はわかりません。

私はこれで2日間これに固執しています。どんな助けも非常に高く評価されるでしょう!

ありがとうございました。

答えて

0

namesurnameは、yというタプルになっています。 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

関連する問題