Python调用私有方法触发AttributeError问题求助
问题解决方法
你遇到的问题源于Python的私有成员机制和代码里的属性访问错误,具体修正方案如下:
- 私有方法的调用逻辑错误:Python中以双下划线开头的方法会被自动做名称修饰,实际存储的方法名是
_Student__print,直接用st.__print()调用会触发AttributeError,因为这个名称不存在。 - 实例属性访问错误:
__print方法里的self.name是无效的,你初始化的是私有属性self.__name,这里必须对应改成self.__name才能正确访问。
修正后的完整代码:
class Student : def __init__(self,name): self.__name = name def __print(self): print(self.__name) # 修正属性引用 st = Student("amir") st._Student__print() # 使用名称修饰后的方法名调用
额外说明:
- Python的双下划线私有机制只是名称修饰,并非严格的访问限制,虽然可以通过
_类名__成员名的方式访问,但这不符合私有成员的设计初衷。如果需要外部调用该方法,建议把方法名改成单下划线开头(如_print,这是Python约定的受保护成员),或者直接去掉下划线设为公开方法。
内容的提问来源于stack exchange,提问作者mohammad saleh
相关产品推荐
相关产品推荐

