有没有办法检查 Python 数据类是否已设置为冻结?如果不是,那么在dataclasses模块中使用像 is_frozen 这样的方法来执行此检查是否有价值?
例如
from dataclasses import dataclass, is_frozen
@dataclass(frozen=True)
class Person:
name: str
age: int
person = Person('Alice', 25)
if not is_frozen(person):
person.name = 'Bob'
Run Code Online (Sandbox Code Playgroud)
检查数据类是否已设置为冻结的一种方法是尝试修改其属性之一并捕获FrozenInstanceError冻结时将引发的异常。
例如
from dataclasses import FrozenInstanceError
is_frozen = False
try:
person.name = 'check_if_frozen'
except FrozenInstanceError:
is_frozen = True
Run Code Online (Sandbox Code Playgroud)
但是,如果数据类未冻结,则属性将被修改,这可能只是为了执行检查而不需要的。