检查类中的字段是否正在打字的最佳方法是什么?可选?
示例代码:
from typing import Optional
import re
from dataclasses import dataclass, fields
@dataclass(frozen=True)
class TestClass:
required_field_1: str
required_field_2: int
optional_field: Optional[str]
def get_all_optional_fields(fields) -> list:
return [field.name for field in fields if __is_optional_field(field)]
def __is_optional_field(field) -> bool:
regex = '^typing.Union\[.*, NoneType\]$'
return re.match(regex, str(field.type)) is not None
print(get_all_optional_fields(fields(TestClass)))
Run Code Online (Sandbox Code Playgroud)
fields来自哪里dataclasses,我想列出所有Optional字段。我现在正在做的解决这个问题是使用基于字段名称的正则表达式,但我不喜欢这种方法。有更好的方法吗?