TypeError: _ _ init _ _ () 应该返回 None,而不是 ‘X’ (Python)
TypeError: __init__() should return None, not ‘X’ (Python)
当我们从类中的方法返回值时,会出现Python“TypeError: _ init _ _ () should return None, not ‘X’” 。__init__()
要解决该错误,请return
从方法中删除该语句,因为
__init__
类中的方法应始终隐式返回None
。
壳
TypeError: __init__() should return None, not 'int'
下面是错误如何发生的示例。
主程序
class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary # 👇️ remove this return statement return {'name': name, 'salary': salary} # ⛔️ TypeError: __init__() should return None, not 'dict' emp1 = Employee('Bob', 75)
错误是因为我们从__init__()
方法中返回了一个值。
该__init__
方法不应该有return
声明
该__init__
方法应始终None
(隐式)返回,因此删除
return 语句以解决错误。
主程序
class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary emp1 = Employee('Bob', 75) print(emp1.name) # 👉️ 'Bob' print(emp1.salary) # 👉️ 75
该__init__
方法用于在实例上设置提供的值,不应返回值。
如果我们返回的值不是None
来自类的方法,则会引发__init__()
a
。TypeError
从技术上讲,您可以
return None
从方法中获取,但没有充分的理由这样做,因为所有未显式返回值的函数和方法 return 。 __init__()
None
当类定义__init__()
方法时,创建实例时将调用该方法。
该__init__()
方法不应返回任何内容。
主程序
class Employee(): country = 'Belgium' def __init__(self, name, salary): self.name = name self.salary = salary def get_name(self): return self.name emp1 = Employee('Bob', 75) print(emp1.get_name()) # 👉️ 'Bob' print(emp1.salary) # 👉️ 75
确保缩进正确并且没有拼错(每边两个下划线)。
__init__
如果在实例化类时传递参数,则参数将传递给方法__init__()
。
name
上面示例中的和实例变量salary
对于每个实例都是唯一的,而不是所有实例共享的类变量。 country
请注意,该方法采用的第一个参数__init__()
是self
。
您可以将此参数命名为任何名称,因为该名称self
在 Python 中没有特殊含义。
self
表示该类的一个实例,因此当我们将一个变量赋值为 时
self.my_var = 'some value'
,我们声明了一个实例变量——每个实例的唯一变量。
我还写了一篇关于
从类方法中“返回自我”的目的的文章。
想了解更多关于在 Python 中使用类的信息吗? 查看这些资源: 在 Python 中从字典创建类实例,在 Python 中从字典创建类实例。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: