WXHXIXTE
WXHXIXTE

Reputation: 41

Why do I keep getting object errors?

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

Answers (2)

Grimmy
Grimmy

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

vallentin
vallentin

Reputation: 26197

When you do Employee(...) it calls __init__, so rename make_emp to __init__.

Upvotes: 2

Related Questions