python - 如何使元组子类接受 2 个参数?
问题描述
我创建了一个元组子类来向元组添加一个属性。使用与列表子类相同的逻辑,可以正常工作。代码:
class TupleObject(tuple):
def __init__(self, property, _tuple):
super().__init__(_tuple)
self.property = property
_tuple = TupleObject(property, (0, 0))
抛出错误:
TypeError:元组最多需要 1 个参数,得到 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')
推荐阅读
- swift - 如何为日语设置系统字体?
- c++ - 为什么一个 ostream << 重载工作,而另一个不工作?
- oracle - 对 Oracle 上的插入/删除/选择性能进行故障排除
- stack - 如何在堆栈中编写推送和弹出函数?在 C 中
- python - 如何在 Kivy 中删除动态添加的项目
- c# - 在 c# 中,哈希表键和值出现错误
- reactjs - 在我不使用任何列表时收到警告唯一密钥道具
- sql - 如何获取全名作为别名并在 Like 语句中使用它
- r - 在 R 中的 ggplot2 中有没有一种方法来操作或自定义 x 轴文本的显示?
- javascript - 如何从 selenium 的输入文本框中获取文本?