在Python中,我经常发现自己需要类似 的NamedTuple(不可变,类型化),但具有可重写的构造函数和可扩展性。
(Python 3.6及更高版本)语法
class MyThing(NamedTuple):
thing1: int
thing2: float
很好,但是:
__new__
构造函数,该构造函数对于参数检查和类型强制转换很有用。 不能以逻辑方式扩展:即
class MySpecificThing(MyThing):
thing3: str
不能用
构造obj = MySpecificThing(thing1=2, thing2=2.5, thing3='aaa')
(您得到TypeError: __new__() got an unexpected keyword argument 'thing3'
)
有人知道具有所有这些好属性(不变性,类型字段,可扩展性和可自定义构造)的数据结构吗?