| 34 | return int(self.get(key, default)) |
| 35 | |
| 36 | def getenum(self, key: str, default: Any = None, enum: Type[Enum] = None) -> Any: |
| 37 | value = self.get(key, default) |
| 38 | |
| 39 | # 未指定枚举类型,直接返回原值 |
| 40 | if enum is None: |
| 41 | return value |
| 42 | |
| 43 | # 已经是目标枚举类型,直接返回 |
| 44 | if isinstance(value, enum): |
| 45 | return value |
| 46 | |
| 47 | # 尝试通过 name 查找 (如 "RED" -> Color.RED) |
| 48 | if isinstance(value, str): |
| 49 | try: |
| 50 | return enum[value] |
| 51 | except KeyError: |
| 52 | pass |
| 53 | try: |
| 54 | return enum[value.upper()] |
| 55 | except KeyError: |
| 56 | pass |
| 57 | |
| 58 | # 尝试通过 value 查找 (如 1 -> Color.RED) |
| 59 | try: |
| 60 | return enum(value) |
| 61 | except ValueError: |
| 62 | pass |
| 63 | |
| 64 | # 都找不到,返回默认值 |
| 65 | return default |
| 66 | |
| 67 | def get_processor_name(self): |
| 68 | return self.get("processor_name") |