2015-10-05 79 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