【发布时间】:2020-10-01 01:56:09
【问题描述】:
class abc:
def yo(var):
a=var
print(a)
x=abc().yo(5)
输出:
回溯(最近一次通话最后一次):
文件“main.py”,第 5 行,在
x=abc().yo(5)
TypeError: yo() 接受 1 个位置参数,但给出了 2 个
class abc:
def yo(self,var):
self.a=var
print(self.a)
x=abc().yo(5)
输出:5
在我使用 self 关键字之前它一直有效我的意思是我们可以在不使用 self 参数的情况下调用一个函数,为什么它说 yo() 接受 1 个参数,而当我们排除 self 时给出 2 个参数?
【问题讨论】:
-
self不是关键字,它是实例方法的第一个参数的常规名称。如果您不需要访问实例,请不要将其设为实例方法 - 它可以是静态方法或只是一个函数。 -
如果您的方法不需要
self,这表明它应该是静态的stackoverflow.com/questions/43587044/… -
@jonrsharpe self 不是关键字。我的意思是我们可以就地使用任何其他变量吗?
-
您在上述评论中的问题已在以下答案之一中得到解答。我只是添加静态方法意味着该方法既不依赖于实例也不依赖于类,这就是为什么它不需要参数列表中的
self或cls。 -
它在类中只是因为与它有一些亲和,否则它可能只是另一个正常的功能。
标签: python python-3.x class oop self