2017-03-06 15 views
1

私は初心者です。クラス機能を使用している従業員のユーザー入力から従業員の休暇管理データを取得しようとしています。ここでクラスを使用中にPythonでエラーが定義されていません

class Employee: 
    n=int(raw_input("Pls enter the number of employees:")) 

def __init__(self, name, idno, leavetaken, leavereqd, reason): 

    self.name=name 
    self.idno=idno 
    self.leavetaken=leavetaken 
    self.leavereqd=leavereqd 
    self.reason=reason 

    def Employee(self): 
     print("name:", self.name,", idno:", self.idno, ", leavetaken:", self.leavetaken,", leavereqd:", self.leavereqd,", reason:", self.reason) 

print "Employee.name:", Employee.name    
print "Employee.idno:", Employee.idno 
print "Employee.leavetaken:", Employee.leavetaken 
print "Employee.leavereqd:", Employee.leavereqd 
print "Employee.reason:", Employee.reason 
+0

あなたはあなたのケース – Arseniy

+0

あなたのクラスのクラス名を返す関数は '属性' __idno__'を持って(もしません。それがビルトインだからといって__name__' '上のエラーを取得didntの など__name__から二重のアンダースコアを削除し、 idno'、問題のため)。それは属性 'Idno'を持っています。他の4つの属性と同じです。副作用として、 'Employee'関数の名前と他の属性を表示しようとしましたが、' __name__'以外のものはありませんが、それはあなたが思う名前ではありません。 – DyZ

答えて

1

このようなことをしようとしていますか?

class Employee: 
    def __init__(self, name, idno, leavetaken, leavereqd, reason): 
     self.name = name 
     self.idno = idno 
     self.leavetaken = leavetaken 
     self.leavereqd = leavereqd 
     self.reason = reason 

    def __str__(self): 
     return "Name: {}\nID No:{}\nLeave Taken: {}\nLeave Requested: {}\nLeave Reason: {}\n".format(self.name, self.idno, self.leavetaken, self.leavereqd, self.reason) 

n = int(raw_input("Please enter the number of employees: ")) 
employees = [] 

# capture employee leave requests from input 
for i in range(n): 
    print("\n({} of {})".format(i + 1, n)) 
    employee = Employee(
     raw_input("Employee name: ") or "employee".format(i + 1), 
     raw_input("Employee ID no: ") or str(i + 1), 
     int(raw_input("Employee leave taken: ") or "0"), 
     int(raw_input("Employee leave requested: ") or "0"), 
     raw_input("Employee leave reason: ") or "No reason" 
    ) 
    employees.append(employee) 
print("\n") 

# print captured leave requests 
print("Employee leave requests:") 
for employee in employees: 
    print(employee) 
+0

これは私が探していたコードです。ありがとうたくさん:) – anonymous

+0

Hpwはcsvファイルに上記のコードを書くには??ごめんなさい。私の初心者です – anonymous

+0

初心者のための参考文献がたくさんありますhttp://www.pythonforbeginners.com/systems-programming/using-the-csv-module-in-python/最初にコードを書いてみて、別の質問を投稿してみてくださいもしあなたがまた立ち往生すれば –

0

あなたが「従業員」二度定義している従業員の休暇管理のために、ユーザからのn個の入力を取得するために私のコードです。一度クラスとして、次に関数として。 __name__属性「Employee」にアクセスしようとすると、クラスの属性ではなく関数の属性にアクセスします(__name__が成功し、__idno__が失敗する)。

+0

上記のコードを変更しました。それでも Plsのは、従業員の数を入力し、エラーを取得してイム:1 Employee.name: トレースバック(最新の呼び出しの最後): ファイル「C:/Python27/emplclass.py」 印刷「従業員で、15行目、 .name: "、Employee.name AttributeError:クラスEmployeeに属性 'name'がありません – anonymous

+0

あなたの編集が表示されます。まず、あなたの__init__関数がクラスの下にあるべきです(1つインデントされます)。第二に、あなたはそれらが "静的"属性であるかのように、それらの属性( 'name'、' idno'など)にアクセスしようとしています。それらにアクセスしたい場合は、まずEmployee: 'emp1 = Employe(" John "、1、0、0、" reason ")'という新しいインスタンスをインスタンス化し、その属性に 'emp1.name'または関数' emp1 .Employee() ' – Den1al

+0

私はこれらのジョン1,0,0を取得したいと思う名前のような一般的なもの、従業員の番号と理由などこれらの情報はユーザーの入力ですので、私はそれらを定義することはできません – anonymous

関連する問題