我有一個解決方案似乎正在創建一個類的問題。然而,這個類中的所有方法都是靜態的,我只會實例化一次類,所以我想知道使用類是否是正確的方法。Python結構 - 我真的需要一個類嗎?
更具體地說,我想要有一個單獨的模塊來存儲一些函數和一些基本上是程序框架的變量。這些函數和變量依賴於定義我的模型的一些參數(並且我不想將這些參數作爲參數傳遞給其他原因,以後我可能會指定相關的參數)。例:
# my_model.py
def V(x):
return -m*x**2 + k*x**4
在其他模塊我對這些參數的「M」和「K」,併爲每個值我想,說,求最小V的一些值掃描:
# scan.py
from scipy.optimize import minimize
import random, my_model
for i in range(5):
m = random.randint(0,10)
k = random.randint(0,10)
minimize(my_model.V, 0)
當然,這是行不通的,因爲my_model.V不知道m和k是什麼。正如我所說的,我想過在my_model文件中創建一個類,在該類中定義函數V(和其他!),並在scan.py中實例化傳遞參數「m」,「k」作爲參數的類。但是,正如我所說,這聽起來像是過度使用班級功能。例如,顯然上面的函數V是靜態的,所以在這個類中所有其他的定義都會發生。那麼有沒有其他更正確的方法來實現我想要的,還是我只是「過度反應」和/或完全誤解了Python中類的使用?
重新實現爲什麼'V'是靜態的,如果它使用'm'和'k'成員? –
@VaughnCato因爲我不需要也不想將'self'傳遞給它。然後,我可以創建一個'class Model',將'm'和'k'定義爲類(不是實例)變量。這對我來說似乎有點奇怪,這就是爲什麼我不願意來這裏,並問這是否是正確的方式來做到這一點......但它的工作原理。 – tchuncly