方法正在考虑 "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)
我有两个 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)