实现python删除时引发的异常

时间:2016-05-24 23:01:24

标签: python exception

我正在实现一个类,我希望永远不会删除属性,即del myClass.immortal_attr。当用户尝试执行此操作时,可以接受什么异常?

对于我来说,内置的异常都不是很明显,我觉得我不需要实现自定义的Exception类。像DeleteError这样的东西似乎是一种相当普遍的需求。

2 个答案:

答案 0 :(得分:2)

提升AttributeError,就像Python附带的类型一样:

>>> del (1).bit_length
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'int' object attribute 'bit_length' is read-only
>>> class Foo(object):
...     @property
...     def x(self):
...         return 3
...
>>> del Foo().x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: can't delete attribute

顺便说一下,使用property实现您的属性可能是实现您尝试做的事情的好方法。

答案 1 :(得分:0)

我相信AttributeError可能适用于您要执行的操作,但如果这不适合您的目的,您也可以创建自己的自定义异常。

此网站可能能够帮助您弄清楚如何创建自定义例外。 https://www.codementor.io/python/tutorial/how-to-write-python-custom-exceptions