繁体   English   中英

python int对象不可调用吗?

[英]python int object is not callable?

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()一样调用它,它将很好地工作。 有人知道吗?

随着self.size = 0您隐藏了self.size = 0 size ,因此size是一个int而不是一个方法。

您已使用属性隐藏了方法。 然后,在您的代码中访问int类型的属性,因此不可调用。 避免命名方法和属性相同。

如果您想获得属性。 @property装饰器:

@property
def size(self):
    return self._size

在构造函数中,您只需定义self._size并在内部使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM