私の質問への回答が既にある場合はお詫びします。私はしばらくの間、スタックのオーバーフローを検索しましたが、私が使用できるものは何も見つかりませんでした。Pythonのインクリメント関数の名前
私は現在、クラスを作成する方法を学習しています。明示的なRunge-Kuttaメソッド1-4のクラスを作成しました。クラス名は「RK_1」、「RK_2」、「RK_3」、「RK_4」です。私のコードをテストするために、私はLegendre微分方程式を解くことにしました。私はこれもまた、「Legendre」と呼ばれるクラスを作成しました。
私はこの問題を解決したかったので、特定のRKスキームを使用してルジャンドルの問題を解決する関数を書きました。私は私のRKスキームのそれぞれのためにこれをやってみたかったので、私はしかし、私はこれを行うための簡単な方法がなければならない実現
def solve_Legendre_1(p,Tmax,init,dt=0.001):
f = Legendre(p)
solver = RK_1(init,f)
while solver.now() < Tmax:
solver(dt)
return solver.state()
def solve_Legendre_2(p,Tmax,init,dt=0.001):
f = Legendre(p)
solver = RK_2(init,f)
while solver.now() < Tmax:
solver(dt)
return solver.state()
def solve_Legendre_3(p,Tmax,init,dt=0.001):
f = Legendre(p)
solver = RK_3(init,f)
while solver.now() < Tmax:
solver(dt)
return solver.state()
def solve_Legendre_4(p,Tmax,init,dt=0.001):
f = Legendre(p)
solver = RK_4(init,f)
while solver.now() < Tmax:
solver(dt)
return solver.state()
すなわち、同じ機能を4回を書きました。だから、私は
for j in range(4):
def solve_Legendre_%s(p,Tmax,init,dt=0.001) % (j+1):
f = Legendre(p)
solver = RK_%s(init,f) % (j+1)
while solver.now() < Tmax:
solver(dt)
return solver.state()
のように、何かを関数の名前を変更するにはループとstr.format()を使用して、それはそれに対応するRK方式で取るために得ることができるかもしれないと思ったが、これは明らかにしません作業。私はこれにどのようにアプローチすべきか誰にも分かりますか?
ありがとうございました。
は、なぜあなたは、同じ機能を4回書いていますか...?その関数に可変性がある場合は、その内部に変数を使用します*。同じコードを繰り返さず、繰り返しコードの自動生成を開始しないことが最も確実です。 – deceze
@deceze夜は非常に遅いので、私はまっすぐ考えることや愚かなことをしているわけではありません。ご協力いただきありがとうございます。 – Mattos