无法在Python中调用方法

2024-05-08 13:49:04 发布

您现在位置:Python中文网/ 问答频道 /正文

现在我在班上有一个非常简单的方法,但是我很难调用它

def size(self):
  return self.size

我需要使用的电话是:

print(str(ll.size()))

总是导致这样的输出:

print(str(ll.size()))
TypeError: 'int' object is not callable

我听说过好几次这是我设置size()方法的方式,但我始终无法理解它。有人能告诉我一个正确的方法,使一个方法,可以这样调用,并解释差异,以供将来参考?谢谢


Tags: 方法selfsizereturnobjectisdefnot
2条回答

不能同时具有实例变量名size和实例方法名size

如何区分它们

在这里,实例变量优先,因为它是首先定义的(在__init__方法中可能有一个self.size = x,因此首先出现在对象__dict__中),它是int,因此不可调用

如果对size值没有特殊处理,只需直接使用属性而不定义函数:

class Foo:
        def __init__(self, somearg):
            # ...
            self.size = somearg * 3
>>> foo = Foo(3)
>>> foo.size
9

如果你想让事情变得更复杂(与我这里的小例子相反),使用property

class Foo:
    def __init__(self, somearg):
        # ...
        self._size = None
        self._someattr = somearg
    # ...
    @property
    def size(self):
        if self._someattr > 2:
            return self._someattr * 3
        return 1
>>> foo = Foo(3)
>>> foo.size
9
>>> bar = Foo(2)
>>> bar.size
 1

要完全理解属性装饰器的优点,请阅读this tutorial

似乎您的类有两个名为size的属性,一个是您定义的方法,另一个是您从方法内部调用的属性

从错误消息可以看出第二个被调用了。所以,ll.size是一个int,ll.size()是'调用'这个int

尝试将您的方法重命名为size以外的其他方法,看看是否有效

相关问题 更多 >