2
class ShortInputException(Exception):
'''A user-defined exception class.'''
          def __init__(self, length, atleast):
                Exception.__init__(self)
                self.length = length
                self.atleast = atleast
try:
          s = raw_input('Enter something --> ')
          if len(s) < 3:
                raise ShortInputException(len(s), 3)


except ShortInputException, x:
           print 'ShortInputException: The input was of length %d, \
           was expecting at least %d' % (x.length, x.atleast)

この行の構文がわかりません。except ShortInputException, x:

xは何のためにここにありますか?そして、なぜそれがオブジェクトとして機能しているのですか?

この行は何をしますか?: Exception.__init__(self)

ありがとう

4

2 に答える 2

7
except ShortInputException, x:

クラスShortInputExceptionの例外をキャッチし、例外オブジェクトのインスタンスをxにバインドします。

このためのより一般的な構文は次のとおりです。

except ShortInputException as x

これは、PEP3110で説明されているように優先されます。Python 2.5をサポートする必要がない限り、asバージョンを使用する必要があります。


Exception.__init__(self)

このユーザー定義クラスの派生クラスであるスーパークラスのコンストラクターを呼び出します。

于 2012-05-23T06:22:27.073 に答える
1

この行は何をしますか?:Exception.__init__(self)

ShortInputException(Exception)ShortInputExceptionクラスをのサブクラスとして宣言しますExceptionException.__init__(self)親クラスのコンストラクターを呼び出します。

except ShortInputException, x:

ドキュメントから:

例外が発生すると、例外の引数とも呼ばれる値が関連付けられている場合があります。引数の存在とタイプは、例外タイプによって異なります。

例外句は、例外名(またはタプル)の後に変数を指定できます。変数は、instance.argsに格納されている引数を使用して例外インスタンスにバインドされます。

xあなたの例では、発生した例外オブジェクトです。

于 2012-05-23T06:31:18.993 に答える