Reputation: 143
I'm a beginner and i have been trying to get employee leave management data from user input of 'n' employees using class function.
Here are my codes to get n inputs from user for employee leave management
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
Upvotes: 1
Views: 1504
Reputation: 3842
Are you trying to do something like this?
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)
Upvotes: 1
Reputation: 647
You are defining "Employee" twice; once as a class and then as a function. When you're trying to access the __name__
attribute of "Employee" you accessing the function's attribute rather than the class's one (that's why the __name__
succeeded while __idno__
fails).
Upvotes: 0