|
发表于 2024-4-7 17:46:33
|
显示全部楼层
是的,当你在使用`in`关键字进行判断时,Python会调用`__contains__`方法来执行判断操作。在你的代码中,`__contains__`方法返回的是`student`对象,这个对象被认为是`True`,因此条件判断结果为`True`。
如果你想要打印学生的名字而不仅仅是`True`或`False`,可以稍作修改:
- class StudentManager:
- def __contains__(self, name):
- for student in self.students.values():
- if student.name == name:
- return True # 返回布尔值
- return False
-
- def __getitem__(self, name):
- for student in self.students.values():
- if student.name == name:
- return student.name # 返回学生名字
- manager = StudentManager()
- # 添加学生对象到 manager 中
- print("小甲鱼" in manager) # 输出 True
- print(manager["小甲鱼"]) # 输出 小甲鱼
复制代码
在上述代码中,我们增加了`__getitem__`方法,用于通过索引获取学生的名字。现在,`print(manager["小甲鱼"])`会输出学生的名字。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|