You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用私有方法触发AttributeError问题求助

问题解决方法

你遇到的问题源于Python的私有成员机制和代码里的属性访问错误,具体修正方案如下:

  1. 私有方法的调用逻辑错误:Python中以双下划线开头的方法会被自动做名称修饰,实际存储的方法名是_Student__print,直接用st.__print()调用会触发AttributeError,因为这个名称不存在。
  2. 实例属性访问错误:__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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:32:31