0

モジュールのinit関数を作成していますが、ユーザーが誤って2回呼び出した場合に、いくつかの例外を発生させたいと思います。どのような標準例外を発生させる必要がありますか。

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

実行時エラーが発生する可能性がありますが、イニシャライザを変更して、2 回呼び出された場合に損傷を与えないようにすることをお勧めします。

これはおそらく、ビルトインではなくカスタム例外を発生させる必要があるケースです。

于 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()

(ただし、クライアント コードに任せるのではなく、インポート時にモジュール内のクラスを個人的に初期化します。インポート後に初期化を処理する必要がある場合は、例外を発生させるのではなく、2 番目の呼び出しをノーオペレーションにすることを検討してください。 )

于 2012-12-14T16:31:24.973 に答える