2015-10-05 4 views
1

Как напечатать значения e1 и e2. он не возвращает никаких значений.TypeError: этот конструктор не принимает аргументов в python

class Employee: 

    def __init__(self,name,age): 
     self.name=name 
     self.age=age 

     e1=Employee("xyz",'25') 
     e2=Employee("abc",'23') 
     print("Employee Details...") 

     print("Name:",e1.name,"age:",e1.age) 
     print("Name:",e2.name,"age:",e2.age) 
     return 
t=Employee() 
print t 
+0

Что именно вы пытаетесь сделать? Что вы получаете (ошибка или неожиданный результат?)? –

+0

@AnandSKumar, я думаю, вы отредактировали, решая проблему с кодом. Неправильное редактирование –

+0

@AhsanulHaque Нет, я просто не включил в блок кода 'class Employee:' строка, которая не была внутри блока кода. Вышеупомянутая программа, как она есть, не работает наверняка. Он пытается создать 'Employee()', но 'Employee()' '' '__init __()' принимает еще 2 аргумента. –

ответ

1

То, что вы пытаетесь сделать похоже, изобретает метод __str__. Вот предложение, как вы могли бы сделать это:

class Employee: 

    def __init__(self, name, age): 
     self.name = name 
     self.age = age 

    def __str__(self): 
     return "Name: {0}, age: {1}".format(self.name, self.age) 


t = Employee("uday", 25) 
print t 

я делаю здесь некоторые предположения, и я пытаюсь угадать действительную цель. Я надеюсь, что это все еще помогает.

+0

'__repr__' - правильный метод переопределения для печати объекта в читаемой пользователем форме. – ozgur

+1

@ozgur Взгляните сюда, пожалуйста: http://stackoverflow.com/questions/1436703/difference-between-str-and-repr-in-python. Он говорит, что '__str__' в порядке для печати удобочитаемой информации. '__repr__' должен скорее предоставить уникальный результат. В зависимости от целей OP, возможно, '__repr__' будет лучше, но, как я сказал, я просто делаю некоторые предположения, и поэтому мой ответ основан на них. – cezar

+0

@cezar: Я согласен с тем, что ваше определение '__str__' подходит. Однако, поскольку принятый ответ на связанной вами странице говорит: «почти каждый объект, который вы реализуете, должен иметь функциональный' __repr__', который можно использовать для понимания объекта. Реализация '__str__' не является обязательной: сделайте это, если вам нужна« красивая печать », функциональность». –

1

Вы должны переопределить метод __init__. Это потому, что при инициализации объекта вызывается __init__.

class Employee: 

    def __init__(self, name,age): 
     self.name = name 
     self.age=age 

e1=Employee("xyz",'25') 
e2=Employee("abc",'23') 
print("Employee Details...") 

print("Name:",e1.name,"age:",e1.age) 
print("Name:",e2.name,"age:",e2.age) 

Edit:

Вы можете использовать этот код для достижения желаемого выхода с небольшим обновлением.

Вы можете добавить запятые , после print, чтобы следующий print старта заявления на ту же строку, изменить подобный код:

class Employee: 

    def __init__(self, name,age): 
     self.name = name 
     self.age=age 

e1=Employee("xyz",'25') 
e2=Employee("abc",'23') 
print("Employee Details:"), 

print("Name:",e1.name,"age:",e1.age), 
print("Name:",e2.name,"age:",e2.age) 

Выход:

Employee Details: (' Name:', 'xyz', 'age:'25') (' Name:', 'abc', 'age:'23') 
+0

Возможно, это OP на самом деле пытается это сделать. –

+0

@uday, вы можете увидеть обновленную версию здесь –

+0

спасибо Ahsanul – uday

Смежные вопросы