首页 > 解决方案 > 如何将文件中的数据写入充满类实例的列表中?

问题描述

我对python很陌生。我考虑过创建一个简单的学生列表作为“开始”程序。我的想法是有一个包含几个学生信息的 .txt 文件,并将数据读入一个充满学生课程的列表。然后让“用户”对数据做一些事情。

我试图读取数据并将其拆分,以便我可以将一个新的 Student() 实例添加到包含拆分信息的列表中。

然而,这并没有那么好。

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

     def StartUp():
          with open("students.txt", "r") as file:
              contents = file.readlines()

          studentslist = []

          for line in contents:
              line = line.rstrip()
              x = line.split(" ")
              studentslist.append(Student(x[0], x[1], x[2]))
         return studentslist



   #  the data in the .txt file look like this:
   #  Michael 3 17
   #  Jake 16 18
   #  and so on

运行应用程序并打印学生列表后,它会打印每个学生在内存中的位置。

我怎样才能让它得到实际值?或者也许写得更简单?

标签: pythonlistclass

解决方案


您必须直接打印包含您的Student对象的列表。默认情况下,Python 会打印对象的内存位置,因为它不知道如何打印对象的字符串表示形式。您可以通过定义__repr____str__特殊方法为您的类定义它。

你可以像这样在你的类中定义一个__str__()方法:Student

def __str__(self):
    return "name: {}, number: {}, age: {}".format(self.name, self.number, self.age)

如果您想了解更多关于 Python 的特殊方法的信息,请查看这篇文章:http: //getpython3.com/diveintopython3/special-method-names.html


推荐阅读