【发布时间】:2021-08-24 09:05:36
【问题描述】:
我创建了自己的类,它继承自 python 的默认列表类。下面是一个简化版本,其中包含__abs__ 方法,因此我可以使用python 的abs 函数。
class DataSet(list):
def __abs__(self):
result = []
for i in self:
result.append(abs(i))
return result
假设有一个有时包含NoneType 值的DataSet,例如
>>> dataset = DataSet([1, 2, 3, None, -1, -2, -3])
如果我想知道这个DataSet的绝对值,我使用函数
>>> abs_dataset = abs(dataset)
我想要得到的结果是
[1, 2, 3, None, 1, 2, 3]
但是因为数据集中有一个NoneType 类型的值,我得到了错误
TypeError: bad operand type for abs(): 'NoneType'
对于这种情况,可以通过修改 DataSet 的 __abs__ 函数并检查 DataSet 的各个元素中的 None 来修复它,但在我的情况下,我有更多可能出现 None 值的情况而且我还想实现更多的内置函数,而不仅仅是abs。
有没有一种方法可以将默认 python 函数的这种默认行为设置为 abs 到 None 值?
【问题讨论】:
标签: python list nonetype built-in