Python:具有可重写构造函数的不可变,类型化,可扩展类?

时间:2018-06-21 08:07:26

标签: python python-3.x namedtuple

在Python中,我经常发现自己需要类似 的NamedTuple(不可变,类型化),但具有可重写的构造函数和可扩展性。

(Python 3.6及更高版本)语法

class MyThing(NamedTuple):
    thing1: int
    thing2: float

很好,但是:

  1. 不允许您覆盖__new__构造函数,该构造函数对于参数检查和类型强制转换很有用。
  2. 不能以逻辑方式扩展:即

    class MySpecificThing(MyThing):
        thing3: str
    

    不能用

    构造
    obj = MySpecificThing(thing1=2, thing2=2.5, thing3='aaa')
    

    (您得到TypeError: __new__() got an unexpected keyword argument 'thing3'

有人知道具有所有这些好属性(不变性,类型字段,可扩展性和可自定义构造)的数据结构吗?

0 个答案:

没有答案