2017-03-06 14 views
1

我是一个初学者,我一直在尝试从用户输入'n'员工使用类函数获取员工休假管理数据。python中未定义的错误,而使用类

这里是我的代码,以获得来自用户的n个输入员工休假管理

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

从__name__删除双下划线和等 你没有在'__name__'只是因为它的内置功能,而你的情况 – Arseniy

+0

返回类的名字您的类没有属性'得到一个错误__idno__'(也不' idno',就此事)。它有属性'Idno'。与其他四个属性相同。作为一个方面说明,你试图打印函数'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

你定义“雇员”的两倍;一次作为一个班,然后作为一个功能。当您试图访问“Employee”的__name__属性时,您访问该函数的属性而不是该类的属性(这就是为什么__name__成功,而__idno__失败)。

+0

我对上面的代码进行了更改。静止影像收到错误 请输入您所在员工人数:1 Employee.name: 回溯(最近通话最后一个): 文件“C:/Python27/emplclass.py”,第15行,在 打印“员工.name:“,Employee.name AttributeError:类Employee没有属性'name' – anonymous

+0

我看到您的编辑。首先,你的__init__函数应该在这个类下(一个缩进)。其次,您试图访问这些属性('name','idno'等),就好像它们是“静态”属性一样。如果你想访问它们,首先实例化一个新的Employee实例:'emp1 = Employe(“John”,1,0,0,“reason”)'然后访问它的属性'emp1.name'或者你的函数'emp1 .Employee()'。 – Den1al

+0

我想得到那些约翰1,0,0,像名称,身份证,理由等一般的人作为雇员的数量和这些信息是用户输入,所以我不能定义他们之前 – anonymous