如何使元组子类接受2个参数?

时间:2019-02-17 15:11:51

标签: python python-3.x oop tuples

我创建了一个tuple子类,以将属性添加到tuple。使用与列表子类相同的逻辑,该类可以正常工作。 代码:

Exception thrown at 0x5CF33B8D (ucrtbased.dll) in Deneme.exe: 0xC0000005: Access violation reading location 0x006E0069.

If there is a handler for this exception, the program may be safely continued.

抛出错误:

  

TypeError:元组最多应包含1个参数,得到2个

我该如何进行这项工作?将此精确方法与list子类一起使用可以正常工作。

1 个答案:

答案 0 :(得分:2)

由于元组是不可变的,因此您需要重写__new__才能在创建实例之前修改对象。

class TupleObject(tuple):

    def __new__(cls, property, _tuple):
        self = super().__new__(cls, _tuple)
        self.property = property
        return self

_tuple = TupleObject('a prop', (0, 0))
_tuple, _tuple.property

生产

((0, 0), 'a prop')