对于只能调用一次的函数,我应该在python中引发什么样的标准异常
我正在为我的模块创建一个init函数,我想在用户意外调用它两次时引发一些异常。我应该提出什么样的标准例外对于只能调用一次的函数,我应该在python中引发什么样的标准异常,python,exception,Python,Exception,我正在为我的模块创建一个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.initi
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
您可能会引发运行时错误,但最好更改初始值设定项,以便在调用两次时不会造成损坏 这可能是您应该引发自定义异常而不是内置异常的情况。是一个选项,但可能是最合适的,您可以引发AttributeError,如下所示:
class A(object):
@classmethod
def initialize_class(cls):
del cls.initialize_class
A.initialize_class()
A.initialize_class()
虽然我个人会在导入时初始化模块内部的类,而不是让客户机代码来完成。如果初始化必须在导入时间之后处理,请考虑将第二个调用设为NOP,而不是引发异常。您确定您不想要简单的单子配方或其他什么吗?如果CLS.HasuInIT和CLS.HasoInIt=真的不应该是这样吗?为什么不在适当的时间初始化该类,比如在创建之后?你应该只使用_uinit。