📖 知识点
str 规则
方法名固定:
__str__(self),只有 self 一个参数必须 return 返回一个字符串,不能返回数字、列表等其他类型
触发时机:
print(对象)打印对象str(对象)将对象转字符串
如果没有写
__str__,print 对象默认输出类似<__main__.Student object at 0x...>
基础示例
class Student:
def __init__(self, name, score):
self.name = name
self.score = score
def __str__(self):
# return 返回自定义字符串
return f"学员姓名:{self.name},分数:{self.score}"
stu = Student("小明", 88)
print(stu) # 自动调用 __str__
输出:
学员姓名:小明,分数:88
⚠️ 易错坑
一定要写 return,不要直接在方法内 print
返回值只能是字符串,数字会直接报错
⚔️ Kata 实战任务
任务需求:
定义 Student 类,__init__接收 name, age, score
编写
__str__魔术方法,返回字符串格式:【学员】姓名:xx | 年龄:xx | 分数:xx实例化 stu = Student ("小雅",15,95)
直接 print (stu),观察打印效果
参考代码
class Student:
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score
def __str__(self):
# 自定义打印文本,return字符串
return f"【学员】姓名:{self.name} | 年龄:{self.age} | 分数:{self.score}"
stu = Student("小雅", 15, 95)
print(stu)
运行输出:
【学员】姓名:小雅 | 年龄:15 | 分数:95
🧠 思考题
如果把
__str__里面的 return 换成 print,print (stu) 会得到什么效果?__str__什么时候会自动触发,需要我们手动调用stu.__str__()吗?