Python
相对较新。
我试图练习链接列表,但我遇到了错误并且无法弄清问题是什么。
错误:
self.assertEqual(l.size(), 1)
TypeError: 'int' object is not callable
代码:
from node import Node
class List:
def __init__(self):
self.head = None
self.size = 0
def add(self, item):
temp = Node(item)
temp.setNext(self.head) # ERROR ON THIS LINE
self.head = temp
size += 1
def size(self):
return self.size
...
节点:
class Node:
def __init__(self, data):
self.data = data
self.next = None
....
测试:
import unittest
import unorderedlist
class TestUnorderedList(unittest.TestCase):
def test_add(self):
l = unorderedlist.List()
l.add(8)
self.assertEqual(l.size(), 1)
if __name__ == '__main__':
unittest.main()
这很有趣,因为如果我将size()
重命名为len并将其称为l.len()
,则它可以正常工作。任何人都有线索?
答案 0 :(得分:3)
使用行self.size = 0
隐藏方法size
,因此size
是一个int而不是方法。
答案 1 :(得分:0)
您已使用该属性隐藏了方法。
在您的代码中,您将访问类型为int
的属性,因此无法调用。
避免命名方法和属性相同。
如果您想要实现属性。有@property
装饰器:
@property
def size(self):
return self._size
在构造函数中,您只需定义self._size
并在其内部使用它。