2015-10-05 81 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) 

编辑:

您可以使用此代码来实现与一个小更新所需输出。

您可以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