我创建了一个类,它是一个tuple
包装器,元组不支持项目突变。 我应该离开__setitem__
和__delitem__
的实现或实现像例如下面(因此属于Refused Bequest代码的气味)?哪种方法更pythonic?在这种情况下,定制异常是否更好?Python:不应该使用的神奇方法
def __setitem__(self, key, value):
"""
:raise: Always.
:raises: TypeError
"""
self.data_set[key] = value # Raise from tuple.
def __delitem__(self, key):
"""
:raise: Always.
:raises: TypeError
"""
raise TypeError("Item deletion is unsupported") # Custom exceptions thrown.
拒绝遗赠我的意思是这个类声明实现'__setitem__'和'__delitem__',但它的行为表明它不支持这些操作。 – JCode
AOK。实际上(正如我提到的),如果目标是不支持项目分配和删除,那么确实实现这些方法是没有意义的。 –