Python 对象不可调用

Python Object not callable

我是 python 的新手:

创建了 Class:

class NodeStruct:
"""Struct to hold node data for search trees"""

  def __init__(self, name, children, parent_name, edge_weight):
      self.name = name
      self.childNodes = children
      self.parent = parent_name
      self.weight = edge_weight

  def name(self):
      return self.name

  def parent(self):
      return self.parent

  def path_cost(self):
      return self.weight

  def children(self):
      return self.childNodes

  def child_keys(self):
      return self.childNodes.keys()

实例化:

this_node = NodeStruct(start, problem[start], 'root', 0)

问题:当我调用 name()

name = this_node.name()

我收到以下错误:

TypeError: 'str' object is not callable

看起来应该很简单...我错过了什么?

您希望 this_node.name() 找到 name 中的哪一个?

      self.name = name
      # ...

  def name(self):
      return self.name

解决方案很可能将属性的名称更改为self._name:

      self._name = name
      # ...

  def name(self):
      return self._name

当您定义 class 时,name 是一个函数。但是,一旦您实例化它,就会调用 __init__,并且 name 会立即设置为您传入的任何内容(在本例中为字符串)。函数的名称不会与其他对象的名称分开。使用唯一的名称。