python - 如何将文件中的数据写入充满类实例的列表中?
问题描述
我对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
运行应用程序并打印学生列表后,它会打印每个学生在内存中的位置。
我怎样才能让它得到实际值?或者也许写得更简单?
解决方案
您必须直接打印包含您的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
推荐阅读
- amazon-web-services - 如何将 AWS RDS 表直接转储到 S3 而不是本地
- laravel - 如何修复错误方法 Illuminate\Database\Query\Builder::attach 不存在。附加多个项目
- c# - 单个操作的 WSDL
- android - Jetpack Compose:无法设置未知属性“useIR”
- prestashop - PrestaShop - 我的前端没有刷新产品类别
- google-apps-script - 脚本将行数据复制到另一个工作表,只是部分工作
- node.js - Heroku 错误代码:Elifecycle +更多未知数
- json - 如何序列化这个json字符串?
- java - 如何将对象的引用传递给arrayList?
- r - 函数混合模型 B (GAMM)