Python 3.x 如何按值从列表中删除对象

Python 3.x 如何按值从列表中删除对象,python-3.x,Python 3.x,我的问题是我创建了一个包含姓名和编号的学生列表。现在的任务是按学生的编号删除学生。我的问题是我的代码不起作用 另一个问题是,它总是显示内存地址,而不是对象的值 提前谢谢 班级学生: def __init__(self, name, number): self.name = name self.number = number 从。学生进口学生 班级课程: def __init__(self, name, code, credit, student_limit): self

我的问题是我创建了一个包含姓名和编号的学生列表。现在的任务是按学生的编号删除学生。我的问题是我的代码不起作用

另一个问题是,它总是显示内存地址,而不是对象的值

提前谢谢

班级学生:

def __init__(self, name, number):
    self.name = name
    self.number = number
从。学生进口学生 班级课程:

def __init__(self, name, code, credit, student_limit):
    self.name = name
    self.code = code
    self.credit = credit
    self.student_limit = student_limit

students = []
def add_student(self, new_student):
    self.student = new_student
    self.students.append(new_student)
    print("Student added" +str(self.students))

def remove_student_by_number(self, student_number):
    self.student_number = student_number
    if student_number in self.students: self.students.remove(student_number)
    print("Student removed" + str(self.students))
从。课程导入课程 班级部门:

def __init__(self, name, code):
       self.name = name
       self.code = code

courses = []       
def add_course(self, course):
    self.course = course
    self.courses.append(course)
    print("Course added" +str(self.courses))
从python导入* def main():


self.students
Student
实例的列表,因此如果未实现方法
\uuu str\uuu
,它将打印实例的内存地址(请参见示例)。您应该尝试显式打印每个属性,如
student.name
student.number

不管怎样,您试图在
student
列表中查找
student\u编号
,因此它当然不会运行删除行。改为使用[student.number for student in self.students]中的
if student\u number
,它正在查找学生的号码列表,而不是学生列表本身。但是,在这种情况下,您还需要删除带有
学生号
作为输入的学生,因此您可能需要使用如下循环:

def remove_student_by_number(self, student_number):
    for student in self.students:
        if student.number == student_number:
            print("Student removed" + str(student.name))
            self.students.remove(student)
            break

谢谢你的帮助。但是当我在[student.number for student in self.students]中用“if student_number”编辑代码时,我得到了一个语法错误。现在的方法是这样的:def remove_student_by_number(self,student_number):self.student_number=student_number,如果[student.number for student in self.students]打印中的student_number(“student remove”+str(self.students))
def remove_student_by_number(self, student_number):
    for student in self.students:
        if student.number == student_number:
            print("Student removed" + str(student.name))
            self.students.remove(student)
            break