Reputation: 41
I have the following program and for some reason I keep getting
TypeError: object() takes no parameters
I am a absolute noob to Python and I'm not even sure what my compiler is telling me.
Code is simply supposed to display employee information:
class Employee(object):
def make_emp(self,name,idNumber,department,jobTitle):
self.name = name
self.idNumber = idNumber
self.department = department
self.jobTitle = jobTitle
def displayEmployee(self):
print("Name : ", self.name, "idNumber: ",self.idNumber, "Department : ", self.department, "Job Title : ", self.jobTitle)
emp1 = Employee("Susan Meyers",47899,"Accounting","Vice President")
emp2 = Employee("Mark Jones",39119,"IT","Programmer")
emp3 = Employee("Joy Rogers",81774,"Manufacturing","Engineer")
emp1.displayEmployee()
emp2.displayEmployee()
emp3.displayEmployee()
Upvotes: 0
Views: 51
Reputation: 4137
You don't really have to use __init__
and you can support multiple initialisers by using static methods.
class Employee(object):
@staticmethod
def create(name, idNumber, department, jobTitle):
e = Employee()
e.name = name
e.idNumber = idNumber
e.department = department
e.jobTitle = jobTitle
return e
def display(self):
print("Name : ", self.name, "idNumber: ",self.idNumber, "Department : ", self.department, "Job Title : ", self.jobTitle)
e = Employee.create("Susan Meyers", 47899, "Accounting", "Vice President")
e.display()
Would work just fine as long as the staticmethod returns a new instance. So your thinking isn't that far off.
Upvotes: 0
Reputation: 26197
When you do Employee(...)
it calls __init__
, so rename make_emp
to __init__
.
Upvotes: 2