是否可以在 __post_init__() 或更高版本中冻结数据类对象?
Is it possible to freeze a dataclass object in __post_init__() or later?
我想知道是否可以在 post_init() 中或什至在定义对象之后“冻结”数据类对象。
所以代替:
@dataclass(frozen=True)
class ClassName:
var1: type = value
有这样的东西:
@dataclass
class ClassName:
var1: type = None
def __post_init__(self):
self.var1 = value
FREEZE()
或者甚至是这样的:
a = ClassName()
FREEZE(a)
可能与否,为什么?
不,不是。但是“冻结”可以被简单地颠覆,只需使用:
@dataclass(frozen=True)
class ClassName:
var1: type = value
def __post_init__(self):
object.__setattr__(self, 'var1', value)
我想知道是否可以在 post_init() 中或什至在定义对象之后“冻结”数据类对象。
所以代替:
@dataclass(frozen=True)
class ClassName:
var1: type = value
有这样的东西:
@dataclass
class ClassName:
var1: type = None
def __post_init__(self):
self.var1 = value
FREEZE()
或者甚至是这样的:
a = ClassName()
FREEZE(a)
可能与否,为什么?
不,不是。但是“冻结”可以被简单地颠覆,只需使用:
@dataclass(frozen=True)
class ClassName:
var1: type = value
def __post_init__(self):
object.__setattr__(self, 'var1', value)