from enum import Enum,unique
@unique # 使用 @unique 装饰器确保枚举值唯一
class Gender(Enum):
Male = 0
Female = 1
class Student(object):
def __init__(self, name, gender):
"""
初始化方法,用于创建 Student 实例。
参数:
- name: 学生的名字
- gender: 学生的性别,可以是 Gender 枚举类型、字符串或整数
"""
# 检查 gender 参数类型,并将其标准化为 Gender 枚举类型
self.name = name
if isinstance(gender, Gender):
# 如果 gender 已经是 Gender 枚举类型,直接赋值
self.gender = gender
elif isinstance(gender, str):
# 如果 gender 是字符串,例如 'Male' 或 'Female'
# 使用 Gender[gender] 按名字匹配枚举成员
self.gender = Gender[gender]
elif isinstance(gender, int):
# 如果 gender 是整数,例如 0 或 1
# 使用 Gender(gender) 按值匹配枚举成员
self.gender = Gender(gender)
else:
raise ValueError('Invalid gender')
# 测试代码
# 创建一个学生实例,性别为枚举成员 Gender.Male
bart = Student('Bart', Gender.Male)
print(bart.name) # 输出: Bart
print(bart.gender) # 输出: Gender.Male
print(bart.gender.name) # 输出: Male (枚举成员的名字)
print(bart.gender.value) # 输出: 0 (枚举成员的值)
# 测试字符串形式的性别输入
lisa = Student('Lisa', 'Female') # Gender['Female']
print(lisa.gender) # 输出: Gender.Female
# 测试整数形式的性别输入
tom = Student('Tom', 1) # Gender(1)
print(tom.gender) # 输出: Gender.Female
# 测试无效的性别输入
try:
invalid = Student('Invalid', 3) # 3 不是有效的 Gender 值
except ValueError as e:
print(e) # 输出: Invalid gender
# your code goes here
# your code goes here