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个参数?
答案 0 :(得分:2)
您必须使用装饰器来更改类方法中的第一个参数,如果您不放置任何装饰器,则如果使用@classmethod装饰器,则函数必须使用defaulf(使用此方法的实例)的self参数。像下面这样,第一个参数是cls(方法的类):
class abc:
a = 'abc'
@classmethod
def aFunction(cls, value)
print(cls.a + value)
第二个修饰符(可能是您正在寻找的修饰符)允许您使用不带默认参数的类方法:
class abc:
def __init__(self,value):
self.value = value
@staticmethod
def aFunction(value):
return value+'abc'
答案 1 :(得分:0)
self
实际上是很长一段时间以来使用的约定,而不是真正的python关键字。
self
只是函数中的一个参数,您可以轻松地使用另一个参数名称来代替它。
那为什么要使用self
?
因为它是可取的,因为它可以提高代码的可读性。
此外,如果该方法不需要self
,则通常表示它应该是静态方法