下面是一个简单的 Python 类的定义。
class Student:
def __init__(self, name, grade):
self.name = name
self.grade = grade
def __str__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
如您所见,我们重写了__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)
Run Code Online (Sandbox Code Playgroud)
我的 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>]. …