我有一个解决方案似乎正在创建一个类的问题。然而,这个类中的所有方法都是静态的,我只会实例化一次类,所以我想知道使用类是否是正确的方法。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