关于python:调用类成员函数会给出typeerror

Calling a class member function gives TypeError

本问题已经有最佳答案,请猛点这里访问。

我正在使用一个库,该库有一个Python类的以下代码(由我自己编辑,以找到一个最小的工作示例):

1
2
3
4
5
6
7
8
class Foo(object):

  def __init__(self):
    self._bar = 0

  @property
  def Bar(self):
    return self._bar

如果我运行以下程序:

1
2
foo = Foo()
x = foo.Bar()

我收到一条错误消息:

1
TypeError: 'int' object is not callable

所以,错误似乎是告诉我它认为Bar()是一个int,而不是一个函数。为什么?


foo.Bar是正确的使用方法

属性将类方法转换为只读属性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Foo(object):

      def __init__(self):
        self._bar = 0

      @property
      def Bar(self):
        return self._bar

      @Bar.setter
      def Bar(self, value):
        self._bar = value


foo = Foo()
print(foo.Bar)  # called Bar getter
foo.Bar = 10  # called Bar setter
print(foo.Bar)  # called Bar getter

它是一种财产!这意味着当您将它作为一个属性获得时,它是返回值,如果您希望它是一个方法,那么就不要将它作为属性。

要使用属性,只需使用foo.Bar,它将返回值。