次の例では、将来のシチュータのコンテキストに依存する定数を選択できます。このクラスの使用例を正しく実装するにはどうすればよいですか?
class Constants:
SPEEDLIGHT = 3 * 10**8
GRAVITY = 9.81
C = Constants()
print(C.GRAVITY)
>> 9.81
各量は固定定数であるため、それほど難しくありませんでした。しかし、私が機能のために同様のことをしたいとします。以下のコードの最初のブロックでは、変数変数x
と固定パラメータa
とb
の2つの分布を指定します。
class IntegrableDistribution:
def Gaussian(x,a,b):
cnorm = 1/(b * (2 * pi)**(1/2))
return cnorm * np.exp((-1) * (x-a)**2/(2 * b**2))
# Gaussian = Gaussian(x,a,b)
def Lognormal(x,a,b):
cnorm = 1/(b * (2 * pi)**(1/2))
return cnorm * exp((-1) * (np.log(x)-a)**2/(2 * b**2))/x
# Lognormal = Lognormal(x,a,b)
私はディストリビューションを呼び出し可能にするために名前を付けようとしていました。その結果、エラーメッセージが表示されたため、上記のコードをコメントアウトしました。次のコードブロックでは、入力を使用して統合用のディストリビューションを選択しようとしています(ただし、非常に非効率です)。
Integrable = IntegrableDistribution()
class CallIntegrableDistribution:
def Model():
def Pick():
"""
1 : Gaussian Distribution
2 : Lognormal Distribution
"""
self.cmnd = cmnd
cmnd = int(input("Pick a Distribution Model: "))
return cmnd
self.cmnd = cmnd
if cmnd == 1:
Distribution = Integrable.Gaussian
if cmnd == 2:
Distribution = Integrable.Lognormal
return Distribution
OR ALTERNATIVELY
cmnd = {
1: Gaussian,
2: Lognormal,
}
私はディストリビューションの問題に本当に関わっていません。私はそれを私の知られているものと未知のものを紹介するためにのみ適用しています。これを適切に行うためのいくつかの方法は、クラスや辞書を使って同様の/簡単な方法はありますか?
1.エラーは何でしたか? 2.関数に大文字の名前を付けないでください。それはクラスのために予約されています。 – Carcigenicate
'TypeError:*: 'property'と 'float'のためのサポートされていないオペランドタイプ – mikey