0

我正在为我的模块创建一个 init 函数,当用户不小心调用它两次时,我想引发一些异常。我应该提出什么样的标准例外。

Class A(object):
    has_init = False

    @classmethod
    def initialize_class(cls):
        if has_init:
             raise Exception('xxx')
        has_init = True

A.initialize_class()
A.initialize_class() # should raise exception
4

3 回答 3

5

您可能会引发运行时错误,但最好更改初始化程序,以便在调用两次时不会造成损坏。

这可能是您应该引发自定义异常而不是内置异常的情况。

于 2012-12-14T16:27:32.320 回答
1

SystemError是一个选项,但RuntimeError可能是最合适的

于 2012-12-14T16:28:15.283 回答
1

你可以加注AttributeError,如下:

class A(object):
    @classmethod
    def initialize_class(cls):
        del cls.initialize_class

A.initialize_class()
A.initialize_class()

(虽然我会在导入时亲自初始化模块内的类,而不是让客户端代码来做。如果必须在导入时间之后处理初始化,请考虑将第二次调用设为无操作而不是引发异常。 )

于 2012-12-14T16:31:24.973 回答