我们可以在没有 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'