我们可以在没有 self 的情况下调用 class 方法吗?
Can we call a class method without self?
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
实际上是长期以来使用的约定,而不是真正的 python 关键字。
self
只是函数中的一个参数,您可以轻松地使用另一个参数名称代替它。
那为什么要用self
呢?
因为它是可取的,因为它增加了代码的可读性。
此外,如果方法不需要self
,通常表示它应该是静态方法
你必须使用装饰器来更改你的 class 方法中的第一个参数,如果你不放置任何装饰器,则函数默认具有 self 参数(使用此方法的实例),如果你把 @class 方法装饰器放在下面第一个参数是 cls (方法的 class):
class abc:
a = 'abc'
@classmethod
def aFunction(cls, value)
print(cls.a + value)
第二个装饰器,可能是您正在寻找的那个,它允许您使用 class 没有默认参数的方法:
class abc:
def __init__(self,value):
self.value = value
@staticmethod
def aFunction(value):
return value+'abc'
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
实际上是长期以来使用的约定,而不是真正的 python 关键字。
self
只是函数中的一个参数,您可以轻松地使用另一个参数名称代替它。
那为什么要用self
呢?
因为它是可取的,因为它增加了代码的可读性。
此外,如果方法不需要self
,通常表示它应该是静态方法
你必须使用装饰器来更改你的 class 方法中的第一个参数,如果你不放置任何装饰器,则函数默认具有 self 参数(使用此方法的实例),如果你把 @class 方法装饰器放在下面第一个参数是 cls (方法的 class):
class abc:
a = 'abc'
@classmethod
def aFunction(cls, value)
print(cls.a + value)
第二个装饰器,可能是您正在寻找的那个,它允许您使用 class 没有默认参数的方法:
class abc:
def __init__(self,value):
self.value = value
@staticmethod
def aFunction(value):
return value+'abc'