繁体   English   中英

我应该为只能调用一次的函数引发python中的哪种标准异常

[英]What kind of the standard exception in python should I raise for a function which can only be invoked once

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

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

您可能会引发运行时错误,但是最好更改初始化程序,这样,如果两次调用它,就不会造成损坏。

在这种情况下,您应该引发自定义异常而不是内置异常。

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

您可以引发AttributeError ,如下所示:

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

A.initialize_class()
A.initialize_class()

(尽管我会在导入时亲自在模块内初始化类,而不是让客户端代码来完成。如果必须在导入后进行初始化,请考虑使第二个调用成为no-op,而不是引发异常。 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM