<分区>
下面是一个简单的 Python 类的定义。
class Student:
def __init__(self, name, grade):
self.name = name
self.grade = grade
def __str__(self):
return self.name
如您所见,我们覆盖了 __str__
返回学生姓名的方法。例如,如果我声明一个变量 x = Student("Trevor", 7)
随后调用 print(x)
,我看到了输出 Trevor
在控制台中。一切都很好。
但是,如果我执行下面的代码片段,所发生的事情会出乎意料,几乎让我相信我们生活在一个模拟世界中,一切都不是真实的。
s1 = Student("James", 11)
s2 = Student("Charlie", 8)
s3 = Student("Alice", 9)
s4 = Student("Dana", 12)
students = [s1, s2, s3, s4]
print(students)
我的 Java 大脑期望输出为 [James, Charlie, Alice, Dana]
, 但我看到的是 [<__main__.Student object at 0x00A7E6D0>, <__main__.Student object at 0x00AFB310>, <__main__.Student object at 0x00AFBB68>, <__main__.Student object at 0x00AFBAD8>]
.
这怎么可能?怎么可能呢?我是真的吗?你是真的吗?我只是不明白。如何?为什么?为什么?