今頭が回っていないので、わかりませんが、
私なら
C++とかなら bool にあたるもの ( C言語だと存在しないので int で代用とか ) を返して、
この戻り値が true ( true相当の値 ) のとき、次のメソッド実行っていう感じにしてはどうでしょうか?
私はC/C++でやっているので C++風に書くと
C++
1if( funcA() ){
2 if( funcB() ){
3 if( funcC() ){
4 return true;
5 }
6 }
7}else{
8 return false;
9}
みたいにするとか。
それか、
Pythonはやってないので適当ですが、
Python
1def func( 本来の引数, 直前のメソッドの値 ):
2 if 直前のメソッドの値 == true:
3 # 実行
4 return true
5 else:
6 return false
みたいに
直前のメソッドを受け取って その値が true とかみたいに "成功" を示すものであれば実行, そうじゃなければ falseを返すとか。
で、メソッドに渡す前に if文でチェック。
false状態なら 質問でいう Xメソッド が return する。
次に3回だけ行うとか、3回目のとき...とかなら、
私なら 別の変数 counter とかみたいなものを用意して、
ループするたびに インクリメント ( C++ とかだと counter++; で、VB系だと counter = counter + 1 ってやつ。 )して、
これが 3回目のときにbreak に相当するものでループを抜けるとか。
そうすれば 配列の型に関係なくできると思います。
他の方から「上記の方法はレガシーコードだ」と指摘を受けました。
その方からは「例外処理」を提示されました。
確かに例外処理もあります。
なので、
メソッドA の内部で処理するときに 指定の処理が失敗したら例外を投げる。
メソッドB でも同様。
メソッドC も...
という風にしておきます。
Pythonはよくわからないので調べてみると、
throw ではなく raise らしいですね。
なので、
Python
1def methodA():
2 # なんらかの処理
3 # ここで処理失敗したとする
4 raise Exception( "methodA失敗" )
5
6def methodB():
7 # なんらかの処理
8 # ここで処理失敗したとする
9 raise Exception( "methodB失敗" )
10
11def methodC():
12 # なんらかの処理
13 # ここで処理失敗したとする
14 raise Exception( "methodC失敗" )
15
としておけば、
Python
1def methodX():
2 try:
3 methodA()
4 methodB()
5 methodC()
6 except Exception, e:
7 print e.value
みたいにできます。
で、もしmethodAで失敗すれば 例外が投げられるので methodB以降は処理しない状態です。
なので、用件にあっているかと。
例外を投げる