我创建了各种函数,其中一个函数应该附加数据,并且在附加项目后应该更新size函数。但是当我这样做时,我得到一个错误,说明+:'method'和'int'的操作数类型不受支持。我对这意味着什么感到困惑。
def size(self):
self.length = 0
return self.length
def append(self, data):
new_node = Double_Node(data)
self.size = self.size + 1
答案 0 :(得分:1)
def size(self):
…
这定义了类的成员size
,它是一种方法。因此,当您尝试执行self.size + 1
时,您尝试将1
添加到方法中,这正是错误告诉您的。
此外,您还要将结果分配给self.size
,基本上会覆盖该方法,因此这不是您想要做的。
相反,您可能希望将self.length
增加一个。
请注意,建议实现特殊方法__len__
,以允许人们将len()
函数与对象一起使用,这是获取对象长度的标准方法。例如:
def __len__ (self):
return self.length
答案 1 :(得分:0)
在您的示例中,size
是一个方法,而不是整数。你可能想要调用它,但由于它不是属性,你需要使用属性装饰器及其setter:
class MyObj(object):
def __init__(self):
self.length = 0
@property
def size(self):
return self.length
@size.setter
def size(self, value):
self.length = value
def append(self, data):
self.size = self.size + 1
然后:
>>> myobj = MyObj()
>>> myobj.length
0
>>> myobj.size
0
>>> myobj.append('foo')
>>> myobj.size
1