fork download
  1. from enum import Enum,unique
  2. @unique # 使用 @unique 装饰器确保枚举值唯一
  3. class Gender(Enum):
  4. Male = 0
  5. Female = 1
  6.  
  7. class Student(object):
  8. def __init__(self, name, gender):
  9. """
  10. 初始化方法,用于创建 Student 实例。
  11. 参数:
  12. - name: 学生的名字
  13. - gender: 学生的性别,可以是 Gender 枚举类型、字符串或整数
  14. """
  15.  
  16.  
  17. # 检查 gender 参数类型,并将其标准化为 Gender 枚举类型
  18. self.name = name
  19. if isinstance(gender, Gender):
  20. # 如果 gender 已经是 Gender 枚举类型,直接赋值
  21. self.gender = gender
  22. elif isinstance(gender, str):
  23. # 如果 gender 是字符串,例如 'Male' 或 'Female'
  24. # 使用 Gender[gender] 按名字匹配枚举成员
  25. self.gender = Gender[gender]
  26. elif isinstance(gender, int):
  27. # 如果 gender 是整数,例如 0 或 1
  28. # 使用 Gender(gender) 按值匹配枚举成员
  29. self.gender = Gender(gender)
  30. else:
  31. raise ValueError('Invalid gender')
  32.  
  33.  
  34. # 测试代码
  35. # 创建一个学生实例,性别为枚举成员 Gender.Male
  36. bart = Student('Bart', Gender.Male)
  37. print(bart.name) # 输出: Bart
  38. print(bart.gender) # 输出: Gender.Male
  39. print(bart.gender.name) # 输出: Male (枚举成员的名字)
  40. print(bart.gender.value) # 输出: 0 (枚举成员的值)
  41.  
  42. # 测试字符串形式的性别输入
  43. lisa = Student('Lisa', 'Female') # Gender['Female']
  44. print(lisa.gender) # 输出: Gender.Female
  45.  
  46. # 测试整数形式的性别输入
  47. tom = Student('Tom', 1) # Gender(1)
  48. print(tom.gender) # 输出: Gender.Female
  49.  
  50. # 测试无效的性别输入
  51. try:
  52. invalid = Student('Invalid', 3) # 3 不是有效的 Gender 值
  53. except ValueError as e:
  54. print(e) # 输出: Invalid gender
  55.  
  56. # your code goes here
  57. # your code goes here
Success #stdin #stdout 0.12s 15448KB
stdin
Standard input is empty
stdout
Bart
Gender.Male
Male
0
Gender.Female
Gender.Female
3 is not a valid Gender