方法正在考虑 "self" 作为参数变量

Method is considering "self" as an argument variable

我有两个 class,在第二个 class 我定义了一个方法,它从第一个 class 实例化一个对象,为它的一个属性赋值,并且然后打印出来。

问题是当我调用函数时使用:

test.Pprint(5)

我收到错误。

TypeError: Pprint() missing 1 required positional argument: 'x'

我的代码:

class node():
    def __init__(self, test):
        self.test = test
    
class test():
    def Pprint(self, x):
        rootnode = node(x)
        print(rootnode.test)

当我删除关键字 self 时,一切都按预期进行。据我所知 self 不应该被认为是一个论点。有什么问题吗?

这是python魔法。当从 class 对象 test.Pprint(x) 调用时,它是一个需要 2 个参数的函数。当从实例调用时,test().Pprint(x) python 将其转换为方法并自动添加对该实例的引用作为第一个参数。在您的情况下,Pprint 不使用 class 的任何功能,因此它可以是静态方法。

class test:
    @staticmethod
    def Pprint(x):
        rootnode = node(x)
        print(rootnode.test)

现在可以从 class 或实例

test.Pprint(x)
t = test()
t.Pprint(x)