我创建了一个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子类一起使用可以正常工作。
答案 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')