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

无法运行简单Python程序:新手代码问题求助与排查

嘿,我来帮你梳理这段Python代码里的问题,让它能正常运行起来!

问题排查与解决方法

你的代码里有几个关键问题导致无法运行,我逐个拆解说明:

1. 直接调用类的实例方法(最核心的运行错误)

你现在用StudentRepo.add(s1)这种方式调用方法,但add是实例方法——这类方法必须先创建StudentRepo的实例对象,再通过实例来调用,而不是直接用类本身调用。如果直接用类调用,Python会把类作为第一个参数self传入,但方法里期望的是StudentRepo的实例,必然会报错。

解决方法:

先创建StudentRepo的实例,再通过实例调用方法:

# 先创建仓库实例
student_repo = StudentRepo()
# 通过实例添加学生
student_repo.add(s1)
student_repo.add(s2)

2. StudentRepo的get_list方法没有返回值

你写的get_list方法只是引用了self.student_list,但没有用return语句返回它。这样调用这个方法时,你得到的会是None,而不是实际的学生列表。

解决方法:

给get_list添加return语句:

def get_list(self):
    return self.student_list  # 加上return返回列表

3. 导入语句的潜在问题(针对多文件结构)

如果你的Student和StudentRepo是放在不同文件里的,那你的导入语句需要对应正确的目录结构,比如:

你的项目根目录/
├─ models/
│  └─ student/
│     └─ Student.py
└─ services/
   └─ student/
      └─ StudentRepo.py

如果只是在同一个文件里测试代码,那可以直接删掉导入语句——因为Student和StudentRepo已经在当前文件定义了,不需要额外导入。

修复后的完整测试代码

class StudentRepo:
    def __init__(self):
        self.student_list = []
    def add(self, student):
        self.student_list.append(student)
    def get_list(self):
        return self.student_list  # 修复:添加return

class Student:
    def __init__(self, name, age):
        self.age = age
        self.name = name

# 测试代码
s1 = Student("A", 10)
s2 = Student("B", 11)

# 修复:先创建实例再调用方法
student_repo = StudentRepo()
student_repo.add(s1)
student_repo.add(s2)

# 验证结果
for student in student_repo.get_list():
    print(f"学生:{student.name},年龄:{student.age}")

运行这段代码会输出:

学生:A,年龄:10
学生:B,年龄:11

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:19:56