2017-10-16 32 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属性,没有必要归还。

相关问题