2017-03-18 11 views
0

私は約1ヶ月間しかプログラミングされていませんでした。私の質問はこれです。関数とクラスを定義するクラスで作業が完了したら、関数でユーザー入力を使用するにはどうすればよいですか。どんな援助も少し光を当てることができると認めます。それは多くの意味がありません。このクラスは現状ではクラスでユーザ入力を使用する

class employee: 


    def __init__(self,first,last,pay,hours): 
     self.first = raw_input("whats your first name") 
     self.last = raw_input("whats your last name") 
     self.pay = int(input("how much do you make an hour")) 
     self.hours = int(input("how many hours do you have")) 



     def raise_amount(self, amount): 
      self.pay = int(input('how much would you like to raise the employee pay')) 



    def overtime(self,overtime): 
     if self.hours !=39: 
      print ("there is an error you have overtime standby") 
      num1 = self.pay/2 
      overtime = num1 + self.pay 
      print self.first, + self.overtime(self.hours) 



print employee(self.hours) 
+2

あなたが何を求めているのかはっきりしません。何が "関数でユーザー入力を使用するか"平均?そして、あなたは本当にコンストラクタ内で 'input 'を呼び出すべきではありません。既存のデータから従業員を作成する場合はどうなりますか? – Carcigenicate

+1

また、コードを強調表示し、編集中に 'ctrl + k'を押すと、正しくフォーマットされます。 – Carcigenicate

+0

[編集]リンクを使用してコードの書式を修正してください。 Pythonは構文のために空白を使用するので、他のユーザーが(Stack Overflowの他の部分とは異なり)これらの問題を修正することを強くお勧めします。実際に使用しているインデントを確認することができます。 –

答えて

2

、特にこのビット:

class employee: 

    def __init__(self,first,last,pay,hours): 
     self.first = raw_input("whats your first name") 
     self.last = raw_input("whats your last name") 
     self.pay = int(input("how much do you make an hour")) 
     self.hours = int(input("how many hours do you have")) 

selfに加えて)__init__四つの引数を与えることによって、それはつまり、あなたはインスタンス化するときクラス(my_employee = employee(...)経由)を使用する場合は、これらの引数をすべて渡す必要があります。すなわち、コード内にはmy_employee = employee("John", "Cleese", "£2", "5 hours")と記述する必要があります。しかし、それは無意味です。なぜなら、__init__関数は、クラスの属性を設定したときにその情報をすべて無視し、代わりにユーザー入力を使用するからです。あなたはこれをしたい:

class employee: 

    def __init__(self): 
     self.first = raw_input("whats your first name") 
     self.last = raw_input("whats your last name") 
     self.pay = int(input("how much do you make an hour")) 
     self.hours = int(input("how many hours do you have")) 

    ... 

my_employee = employee() 

しかし、一般従業員クラスを作成し、その後、あなたが入力を介して、従業員を作成する必要がある状況で、あなたはまだそうすることができる方が良いだろう。具体的には:

class Employee: 
    def __init__(self, first, last, pay, hours): 
     self.first = first 
     self.last = last 
     self.pay = pay 
     self.hours = hours 

    ... 

your_employee = Employee(input("First name: "), input("Last name: "), 
    int(input("Pay: ")), int(input("Hours: "))) 
+2

私はそれが本当に重要だと思うからといって、繰り返し述べておきます。コンストラクタ内のユーザ入力を求めてはいけません。これにより、Employeeを作成するたびにデータを手動で入力する必要があります。既に情報が入っているファイルをお持ちの場合はどうなりますか?コンストラクタの外部に入力を要求し、データを渡します。 – Carcigenicate

+0

コメントのおかげで、それは完全に真です。私はこの人が何をやろうとしているのかと推測していませんでした。しかし、実際のコードでは、 'self.first = first'などを設定し、ユーザー入力でクラスをインスタンス化する必要がある場合は、' employee(input(...)、...) 'を実行します。 – Denziloe

+1

私はそれが問題のために焦点を絞っていることを知っている、私はちょうどそれがOPのための勢いを得る前に撃たれるべき習慣だと思った。私はあなたの答えを損なうつもりはなかった。 +1 – Carcigenicate

関連する問題