example13.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. """
  2. 魔术方法 - 哈希存储 / 上下文语法
  3. """
  4. from random import randint
  5. class Student():
  6. """学生"""
  7. def __init__(self, stuid, name, gender):
  8. self.stuid = stuid
  9. self.name = name
  10. self.gender = gender
  11. def __enter__(self):
  12. return self
  13. def __exit__(self, exception_type, exception_value, traceback):
  14. pass
  15. def __hash__(self):
  16. return hash(self.stuid)
  17. def __eq__(self, other):
  18. return self.stuid == other.stuid
  19. def __repr__(self):
  20. return f'{self.stuid}: {self.name}'
  21. def create_student():
  22. return Student(randint(1001, 9999),
  23. "无名氏",
  24. "男" if randint(0, 1) == 1 else "女")
  25. def main():
  26. """主函数"""
  27. students = {
  28. Student(1001, "王大锤", "男"),
  29. Student(1001, "王小锤", "男"),
  30. Student(1003, "王捶捶", "女")
  31. }
  32. print(len(students))
  33. print(students)
  34. with create_student() as stu:
  35. print(stu.stuid)
  36. print(stu.name)
  37. print(stu.gender)
  38. if __name__ == '__main__':
  39. main()