代码正在忽略if语句中创建的变量,还是它是其他变量?python

代码正在忽略if语句中创建的变量,还是它是其他变量?python,python,class,variables,Python,Class,Variables,我目前拥有的代码似乎没有在if语句中使用我初始化的变量。我是从一个更老更聪明的程序员那里得到了这样做代码的想法。我不确定为什么会出现这个错误,我的语法在某种程度上有问题,或者我缺少了什么 下面是有问题的代码段和下面的输出。之后,是上下文的完整代码。对于整个代码,所讨论的代码位于processScores方法的底部。多谢各位 def processScores( file, Score): #opens file using with method, reads each line wit

我目前拥有的代码似乎没有在if语句中使用我初始化的变量。我是从一个更老更聪明的程序员那里得到了这样做代码的想法。我不确定为什么会出现这个错误,我的语法在某种程度上有问题,或者我缺少了什么

下面是有问题的代码段和下面的输出。之后,是上下文的完整代码。对于整个代码,所讨论的代码位于processScores方法的底部。多谢各位

    def processScores( file, Score):
#opens file using with method, reads each line with a for loop. If content  in line
#agrees with parameters in  if statements, executes code in if statment. Otherwise, ignores line    

    with open(file,'r') as f:
        for line in f:  #starts for loop for all if statements
            if line[0].isdigit: 
                start = int(line[0]) 
                Score.initialScore(start) #checks if first line is a number if it is adds it to intial score
现在是解释错误的输出

     processScores('theText.txt',Score)
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    processScores('theText.txt',Score)
  File "C:/Users/christopher/Desktop/hw2.py", line 49, in processScores
    Score.initialScore(start) #checks if first line is a number if it is adds it to intial score
TypeError: initialScore() missing 1 required positional argument: 'start'

您需要在一个实例上调用instance方法(我假设这是
processScores(file,Score)
的第二个参数),而不是您给它们赋予相同名称的类
Score
,那么哪个是哪个

更改此行:

def processScores( file, Score):
要使用小写字母
评分

def processScores( file, score):
以及以下所有对
分数的引用,例如:

Score.initialScore(start)
致:

这将隐式地发送
Score
实例(
Score
)作为第一个参数
self
,而参数
start
作为第二个参数
start


请参阅,以便更好地理解
self

的用法,我将尝试一下。如果你不介意@Reut Sharabani,那会伤我的脑筋,我不明白这一切是如何在低分的情况下运作的。你能进一步解释一下吗?如果没有,你可以给我指出正确的方向吗?@ChristopherJakob当你使用实例方法时,你总是把
self
作为第一个参数,为什么?嗯,那是因为当你调用
score.somearg)
时,你实际上是在调用
score.someg(score,somearg)
。我将添加详细答案的链接。好的,谢谢Reut Sharabani。这件事对我仍然不起作用,但我会继续尝试。期待您发送的文档。再次感谢you@ChristopherJakob阅读底部的链接,更好地理解python中的
self
用法。重要的是,Java或其他语言在使用实例方法时隐式地使用实例本身。因此,如果在java中有
public void instancemethod(x,y)
,那么在python中就有
def instancemethod(self,x,y)
。这是更明确的,告诉您类(
self
)的一个实例被传递给该方法。在你的例子中,实例是
score
,类是
score
,你混淆了两者。我阅读了链接,它有帮助,但我仍然没有完全理解,我将继续阅读关于self的文章,所以我不会用其他关于self的问题来打扰你,浪费你的时间。我只是不想在任何方面侮辱你,只是为了确保我走在正确的道路上。def ProcessScores的制作理念是它不在课堂上。然后它会号召全班同学来做这项工作。这是你在回答我的问题时注意到的吗?非常感谢你
Score.initialScore(start)
score.initialScore(start)