それを行う正しい方法は、例外を発生させることです。デフォルトでは、例外は から__init__
それを呼び出した人に伝播し、最終的には一番上まで伝播し、スクリプトを停止します。
ただし、その例外を処理して続行したい場合は、例外の処理で説明されているように、続行したいレベルでtry
/ブロックを使用してください。catch
例えば:
class ThingyAlreadyExistsError(RuntimeError):
pass
class Thingy(object):
def __init__(self, pathname):
if os.path.exists(pathname):
yn = raw_input('{} already exists. Overwrite (y/N)?'.format(pathname))
if yn.lower != 'y':
raise ThingyAlreadyExistsError(pathname)
# finish initialization
thingies = []
for pathname in pathnames:
try:
thingy = Thingy(pathname)
except ThingyAlreadyExistsError:
continue
thingies.append(thingy)
に到達する前にこれをキャッチしたい場合は、メソッド、ファクトリ関数、またはループで__init__
いつでもチェックを実行できます。この場合、例外は必要ありません。初期化しないでください。しかし、内部で例外を発生させることを妨げるものは何もありません。__new__
@classmethod
for
__init__