使用类时python中未定义错误

使用类时python中未定义错误,python,function,class,self,Python,Function,Class,Self,我是一名初学者,我一直在尝试使用类函数从“n”名员工的用户输入中获取员工休假管理数据 以下是我的代码,用于从用户处获取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

我是一名初学者,我一直在尝试使用类函数从“n”名员工的用户输入中获取员工休假管理数据

以下是我的代码,用于从用户处获取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

您两次定义“员工”;一次作为类,然后作为函数。当您试图访问“Employee”的
\uuuu name\uuuuuuuu
属性时,您访问的是函数的属性,而不是类的属性(这就是为什么
\uuu name\uuuuuuuuu
成功,而
\uuu id\uuuuuuuuu
失败的原因)。

您正在尝试这样做吗

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)

从name和etc中删除双下划线您没有在
\uuuuu name\uuuuuuu
上得到错误,只是因为它是内置函数,在您的案例中返回类名。您的类没有属性
\uuuuu idno\uuuu
(或者
idno
)。它具有属性
Idno
。与其他四个属性相同。作为旁注,您试图打印功能
员工
的名称和其他属性,但除了
\uuuu name\uuuuu
之外,它没有任何属性,但它不是您认为的名称。我已对上面的代码进行了更改。仍然收到错误,请输入员工人数:1 Employee.name:Traceback(最近一次呼叫上次):文件“C:/Python27/emplclass.py”,第15行,打印“Employee.name:”,Employee.name AttributeError:class Employee没有属性“name”,我看到您的编辑。首先,您的init函数应该在类下(在中有一个缩进)。其次,您试图访问这些属性(
name
idno
等),就好像它们是“静态”属性一样。如果你想访问它们,首先实例化Employee的一个新实例:
emp1=Employe(“John”,1,0,0,“reason”)
,然后访问它的属性
emp1.name
或你的函数
emp1.Employee()
。我想把那些John 1,0,reason作为一般的属性,比如name,id,原因等,因为员工数量和这些信息是用户输入,所以我不能在确定之前定义它们,所以员工输入的数量应该在类定义之外(也是最佳实践)。就在您定义新员工的地方,获取输入,然后使用范围(n)中i的
重复输入的次数,然后就像您输入了员工数量一样,只需输入所有其他内容。我试图通过获取用户输入和添加更多的值来更改访问属性程序,这就是我要寻找的代码。非常感谢:)Hpw将上述代码写入csv文件??很抱歉我是一个初学者,有很多参考资料供初学者参考,请尝试先编写代码,如果您再次遇到问题,请发布另一个问题