私は、lambdaを使ってPythonクラスで関数を定義しようとしています。クラスのインスタンスを参照したいので、どのように呼び出すことができません。Lambdaは自己を参照するPythonクラス
properties.append(pf.moleculeProperties())
properties[-1].name = "Monatomic Hydrogen"
properties[-1].formula = "H"
properties[-1].mass = (1.00795e-3)/(6.022e23)
properties[-1].elecLevels = [[pf.waveNumToJoules(82309.58), 1]]
properties[-1].q = lambda T,V : pf.q_trans(properties[-1],T,V) * pf.q_elec(properties[-1],T,V)
properties.append(pf.moleculeProperties())
properties[-1].name = "Monatomic Oxygen"
properties[-1].formula = "O"
properties[-1].mass = (16.0e-3)/(6.022e23)
properties[-1].elecLevels = [[pf.waveNumToJoules(158.265), 1], [pf.waveNumToJoules(226.977), 1], [pf.waveNumToJoules(15867.862), 1],
[pf.waveNumToJoules(33792.583), 1], [pf.waveNumToJoules(73768.200), 1], [pf.waveNumToJoules(76794.978), 1], [pf.waveNumToJoules(86625.757), 1]]
properties[-1].q = lambda T,V : pf.q_trans(properties[-1],T,V) * pf.q_elec(properties[-1],T,V)
私はリストの最後のメンバー以外の何かにQを呼び出そうとすると、特性を評価するようだ[-1]声明と私のたびに、リストの最後のメンバーを与えます。この例では、水素に対応する要素に対してq関数を呼び出し、酸素に対してq関数を取得しようとしています。
[lambda関数がPythonでキャプチャするものは何ですか?](http://stackoverflow.com/questions/2295290/what-do-lambda-function-closures-capture-in-python) – Kevin
Iラムダを* 'pf.moleculeProperties'の中に割り当てると、あなたが望むスコープを得ることができると思っています。 –