如何在Python函数中将参数添加到'self'旁边?

2024-09-28 21:29:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图安排一个小程序,但看起来我有点不知所措。整个代码太长,不能复制到这里,所以我只想粘贴有问题的部分。在

^{1}$

现在的问题是我必须向kontroll()添加参数,但是我不知道如何在“self”存在的情况下这样做。老实说,我甚至不明白为什么我需要“自我”,因为我没有使用通常使用“自我”参数的类。。。所以不管怎样,我在google上搜索了我收到的错误,在没有self的情况下,在添加了self之后,它开始工作了,但是我不能在括号中添加“skoor”和“vale”。。。 现在我只启动kontroll,括号中没有任何内容,比如这样:kontroll()。 那么我应该如何启动函数,以及如何向它添加参数呢?我也不能使用全局变量,因为这个“skoor=skoor+1”把一切都搞砸了(不能把全局变量放在等号的左边)。在

谢谢。在

编辑: 我程序的GUI部分如下所示:

^{pr2}$

对于Henry的建议(不在课堂上如何使用函数),我开始得到一些没有根据的不同错误,例如“NameError:global name‘oige’is not defined”。不管错误怎么说,全局名“oige”是定义好的,并且没有参数就可以正常工作。如果我将函数定义中的“skoor”和“vale”替换为“self”,并且不带任何参数地调用它,那么一切都会正常工作。我想这是有点难以理解,如果没有看到整篇文章,所以我上传了它here,如果有人有时间的话。 我之前说过在我的代码中有0个类-这已经改变了,因为我一直在努力。同时请记住,这是beta版的beta版,所以很多东西还不能正常工作。 (琐事:它测试和训练人的爱沙尼亚正字法能力)


Tags: 函数代码self程序参数定义错误情况
2条回答

编写函数

向函数添加更多参数非常容易;只需将函数定义更改为

def kontroll(self, skoor, vale):
    # Your code here.

然后skoor和{}成为{}函数的局部变量名,您可以像使用其他变量一样使用它们。在

至于为什么在函数定义中需要self,那是因为(大概)这个方法实际上是您定义的某个类的实例方法。实例方法总是接收绑定到的对象作为第一个参数。这个参数称为self,这就是为什么必须为它保留一个参数。有关更完整的解释,请参见this question。在

如果这实际上是某个类的实例方法,请注意,那么实际上并不需要self。一般来说,如果方法不需要引用特定的对象实例,那么就没有理由让它成为实例方法!在

调用您的函数

调用函数同样简单,但这取决于另一个问题的答案:这实际上是一个实例方法吗?如果它是在一个类中定义的(听起来像是这样),那么您需要执行如下操作:

^{pr2}$

另一方面,如果函数不是在类内定义的,则代码应该如下所示:

def kontroll(skoor, vale):
    pass # Your code goes here.

kontroll(skoor, vale)

您需要self,因为这几乎可以肯定是类的一个方法,并且需要在调用对象时将对象传递给该方法。Self只是一个惯例,从技术上讲,你也可以很容易地使用其他名称。尽管如此,似乎您需要阅读一些python中的类,并真正理解对象实例的工作方式。我建议从文档开始:

http://docs.python.org/2/tutorial/classes.html

代码片段中似乎有很多全局变量,可能应该是类变量,在深入研究之前,您确实需要了解__init__方法是如何工作的。在

相关问题 更多 >