为什么它表明__init__函数应该总是返回?

时间:2017-10-16 07:25:55

标签: python python-3.x

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:

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'

1 个答案:

答案 0 :(得分: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属性,无需返回。