2017-10-16 81 views
0
class Employee: 
    def __init__(self, first, last, pay): 
     self.k=first 
     self.p=last 
     self.l=pay 
     self.email=first+'.'+last+'@gmail.com' 
     h= self.email 
     return (h) 

    def fullname(self): 
     return ('{} {}'.format(self.k,self.p)) 

emp_1=Employee('Aditya','Shrivastava', 500000) 
print(emp_1.fullname())` 

Excepton:爲什麼它表明__init__函數應該始終不返回?

Traceback (most recent call last): 
    File "A:/Python/Programs/main.py", line 54, in <module> 
    emp_1=Employee('corey','schafer',50000) 
TypeError: __init__() should return None, not 'str' 
+4

因爲'__init__'應該總是返回'None'。刪除'return(h)'。 –

+2

*爲什麼你的'__init__'方法返回'self.email'? –

+0

Aditya Shrivastava不要忘記接受並投票答案,你覺得有用,接受是與答案左上角的複選框,並投票與箭頭 –

回答

2

__init__被稱爲設置創建新的空白實例。它總是必須返回None。從object.__init__() documentation

由於__new__()__init__()一起工作在構造對象(__new__()來創建它,並__init__()定製它),沒有非None值可以由__init__()被返回;這樣做會導致在運行時引發TypeError

返回None是沒有return語句的函數的默認值;除去return (h)__init__

class Employee: 
    def __init__(self, first, last, pay): 
     self.k=first 
     self.p=last 
     self.l=pay 
     self.email=first+'.'+last+'@gmail.com' 

您可以在創建實例後訪問email屬性,沒有必要歸還。

相關問題