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

2024-10-01 19:24:08 发布

您现在位置:Python中文网/ 问答频道 /正文

在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'

有人知道一个数据结构具有所有这些优良特性(不变性、类型化字段、可扩展性和可定制结构)吗


Tags: new参数语法floatnamedtupleclassint可扩展性

热门问题