小编ajs*_*002的帖子

Python 预定义的 __str__ 方法行为异常

下面是一个简单的 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>]. …

python python-3.x

2
推荐指数
1
解决办法
55
查看次数

标签 统计

python ×1

python-3.x ×1