Python创建类对象时出现AttributeError的排查与解决方法
问题原因及解决方法
1. 构造函数定义错误
你的User类里的构造函数存在两处错误:
- 正确的构造函数名是
__init__(前后各两个下划线),你写成了def_init_,不仅下划线数量不对,def和init之间还缺少空格,导致Python无法识别这是类的构造函数。 - 构造函数未被执行,实例化
kay时self.name、self.email、self.age这些属性根本没被赋值,调用greeting时自然会触发AttributeError。
2. 方法缩进错误
greeting函数的缩进不正确,它目前是定义在User类外部的普通函数,而非类的成员方法。类的方法必须缩进在类的内部,这样实例才能正常调用它。
修正后的完整代码
class User: def __init__(self, name, email, age): self.name = name self.email = email self.age = age def greeting(self): return f'My name is {self.name} and I am {self.age} years old, you can contact me at {self.email}' kay = User('Kayboy', 'kayboy@gmail.com', 18) print(kay.greeting())
额外注意事项
- 类的所有成员方法必须保持正确缩进(通常为4个空格),确保属于类的内部成员。
- 构造函数
__init__是Python类初始化实例的固定方法名,必须严格遵守前后各两个下划线的格式,不能写错。
内容的提问来源于stack exchange,提问作者Kayboy
相关产品推荐
相关产品推荐

