输出Python中对象数组(列表)的特定优点



我有一个类Student,它有一个名为Students的对象数组(列表(。我正在尝试输出数组中所有学生的姓名。

class Student(object):
name = ""
age = 0
major = ""
# The class "constructor" - It's actually an initializer 
def __init__(self, name, age, major):
self.name = name
self.age = age
self.major = major
Students = []
Students.append(Student("Dave",23,"Chem"))
Students.append(Student("Emma",34,"Maths"))
Students.append(Student("Alex",19,"Art"))
print(Students[0].__dict__)
print(Students[1].__dict__)
print (Students[0])

我发现和厌倦的两种方式都不是输出特定的名称,而是输出位置或整个对象。有没有办法只输出名称?例如输出Students[0]name Dave

{'name': 'Emma', 'age': 34, 'major': 'Maths'}
<__main__.Student object at 0x000001FCDE4C2FD0>```

如果您只想要名称,您可以print(Students[0].name)。如果要在打印Student对象时查看相关属性,可以实现__repr__方法。

class Student:
# The class "constructor" - It's actually an initializer 
def __init__(self, name, age, major):
self.name = name
self.age = age
self.major = major
def __repr__(self):
return f"<Student name={self.name} age={self.age} major={self.major}>"

通过这种方式,您可以简单地执行print(Students[0])来查看学生的姓名、年龄和专业。

顺便说一句,对于普通的类定义,您希望在__init__方法内部初始化实例属性,而不是在__init__之上声明它们:这些都是类属性。请阅读本节文档以熟悉语法。

最新更新