我正在实现一个类,我希望永远不会删除属性,即del myClass.immortal_attr
。当用户尝试执行此操作时,可以接受什么异常?
对于我来说,内置的异常都不是很明显,我觉得我不需要实现自定义的Exception类。像DeleteError
这样的东西似乎是一种相当普遍的需求。
答案 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