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

Python类与函数学习遇问题:代码输出不符合预期求排查

你的Python类代码错误分析与修正

代码中的核心错误点:

  • User类构造方法调用错误:
    User的__init__里写的super().__init__只是引用了父类构造方法,没有实际执行调用。正确写法是super().__init__(nama),这样才能完成父类的初始化逻辑。另外你在User的__init__里重复赋值self.nama=nama属于冗余操作,父类构造已经会处理这个赋值。

  • printUsername方法缺少实例参数:
    Python实例方法的第一个参数必须是self(代表实例本身),你写的def printUsername(nama):里的nama实际接收的是user1这个实例对象,所以打印出了对象地址。正确写法应该是:

    def printUsername(self):
        print(self.nama)
    
  • Data类ganti方法逻辑混乱:

    1. 私有方法__private从未被调用,里面的self.ganti="Replace"根本不会执行,目标属性从未被创建;
    2. 方法名ganti和你要设置的属性名重名,导致方法覆盖了属性;同时方法内self.prvt=self.ganti是把方法本身赋值给变量,打印出了方法对象。
      修正方案:修改属性名避免冲突,在ganti方法内先调用私有方法生成属性,再打印:
    def __private(self):
        self._ganti_val = "Replace"
    def ganti(self):
        self.__private()
        print(self._ganti_val)
    

修正后的完整代码:

class Data:
    def __init__(self, nama):
        self.nama = nama
    def __private(self):
        self._ganti_val = "Replace"
    def ganti(self):
        self.__private()
        print(self._ganti_val)

class User(Data):
    def __init__(self, nama):
        super().__init__(nama)
    def printUsername(self):
        print(self.nama)

user1 = User("Test")
user1.printUsername()
user1.ganti()

运行输出:

Test
Replace

内容的提问来源于stack exchange,提问作者user512512af

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:40:37