我有一个相对简单的类,它只是根据状态改变变量的值。
class SetStates:
def LM_State1():
global p_LM1, p_LM2, p_LM3, p_RR1, p_RR2, p_RR3, p_RF1, p_RF2, p_RF3
p_LM1 = Ra_L*P_j1_s1
p_LM2 = P_j2_s1
p_LM3 = P_j3_s1
p_RR1 = Ra_R*(-1)*P_j1_s1
p_RR2 = (-1)*P_j2_s1
p_RR3 = (-1)*P_j3_s1
p_RF1 = Ra_R*(-1)*P_j1_s1
p_RF2 = (-1)*P_j2_s1
p_RF3 = (-1)*P_j3_s1
最初我正在调用类中的函数,如下所示:
if LM_state == 1:
SetStates.LM_State1()
在意识到我需要初始化之后,现在看起来像这样。
s=SetStates()
if LM_state == 1:
s.LM_State1()
但是我现在收到一个错误,指出它已被赋予1个参数但预期为0.我几乎可以肯定我错过了一些非常微不足道的东西。如果有人能够清除它,那就太棒了,谢谢
答案 0 :(得分:1)
类方法(也就是说:在类定义中定义的任何def
块)会自动传递实例调用者作为它们的第一个参数(除非它定义为staticmethod
但是不要让它混乱水域)。由于LM_State1()
的函数定义不包含 任何 参数,因此Python会抱怨您给它一个参数(s
),它没有我知道该怎么做。
正如@BrenBarn在评论中提到的那样,如果只是修改全局状态,那么从设计的角度来看,你的课程并没有多大意义,但这就是错误的原因。如果你确实需要这个(提示:你没有),你应该考虑将它包装在一个模块中,导入模块,并在顶层定义所有set_state
函数。模块。
# stateful.py
def set_state_1():
...
# main.py
import stateful
stateful.set_state_1() # set the state!