getメソッドでは、デフォルトの関数に例外がある場合、コントロールは常にキーの有無にかかわらずデフォルト関数に移動します辞書。同じことを示すコードブロックを次に示します。次のように
コンパイラの詳細は次のとおり のPython 2.7.6(デフォルト、2015年4月8日、11時18分18秒) [GCC 4.7.2] linux2にPython:Dict getメソッドは、デフォルトが例外をスローする関数に設定されている場合は常に例外をスローします
abc = 1
bcd = 2
class a(object):
def test1(self):
alphaNumMap = {
'a':abc,
'b':bcd
}
num = alphaNumMap.get("a", self.add())
print num
def add(self):
print "add called "
raise Exception
if __name__ == "__main__":
A = a()
A.test1()
上記のコードの出力は、以下であります:
add called
Traceback (most recent call last):
File "test2.py", line 19, in <module>
A.test1()
File "test2.py", line 10, in test1
ipXpath = alphaNumMap.get("a",self.add())
File "test2.py", line 15, in add
raise Exception
Exception
'
そのまま残っありますそのように行動する理由は? –
はい、詳細を追加@RobertMoskal – Bahrom
したがって、getメソッドではデフォルトで関数呼び出しを行うことはできません。パラメータの評価はメソッドの評価を行う前に行われるためです。 @ABH – Arpitha