【问题标题】:class returns <bound method ...> instead of the value I returned (python)类返回 <bound method ...> 而不是我返回的值(python)
【发布时间】:2017-11-10 03:39:54
【问题描述】:

我试图从我定义的类中获取返回值,但它一直返回 &lt;bound method Environment.setEnv of &lt;__main__.Environment object at 0x0000022E86895828&gt;&gt; 而不是我返回的值。

正如您在下面看到的,我的代码创建了连接节点的行*列网格,但这些网格被收集在一个简单的列表nodes 中。

我想要做的是打印这个返回值nodes 以检查一切是否到位。但是,当我这样做时,

env = Environment()
nodes = env.setEnv
print(nodes)  

它不会返回我期望看起来像 [0000x00efc, se0fdsf000cx, 000dfsecsd ....] 的节点列表

我想我不明白如何返回类中使用的变量。 我查阅了我的教科书,但它根本没有任何示例可以应用于这种情况。

class Node:
    def __init__(self, data ="0", up = None, right = None, down = None, left = None, visited = 0):
        self.data = data
        self.up = up
        self.right = right
        self.down = down
        self.left = left
        self.visited = visited


class Environment:
    def __init__(self, row = 10, column = 10):
        self.row = row
        self.column = column

    def setEnv(self):
        nodes = []
        for i in range(self.row*self.column): 
            nodes.append(Node())

        for i in range(0,self.row*self.column,self.column): 
            for j in range(self.column - 1):
                nodes[i+j].right = nodes[i+j+1]
                nodes[i+j+1].left = nodes[i+j]

                if i < (self.row-1)*self.column : nodes[i+j].down = nodes[i+j+self.column]  #맨 마지막 row제외
                if i > 0 : nodes[i+j].up = nodes[i+j-self.column]  

        return nodes

【问题讨论】:

  • 试试nodes = env.setEnv(),需要调用一个方法
  • 是的,你从未真正调用过该方法。

标签: python class


【解决方案1】:

这是python中一个很常见的错误,很容易重现和陷入其中,但是一旦你犯了,你就再也不会犯了:

env = Environment()
nodes = env.setEnv

这不一样:

env = Environment()
nodes = env.setEnv()

使用 () ,您在 python 中调用一个函数,没有它们,您只是返回对函数的引用,而不是“函数的执行”

【讨论】:

  • 如果函数返回一个列表,而我想将一个函数链接到返回的列表上怎么办?在这种情况下,我得到同样的错误。 obj.some_list_func().remove('a')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
  • 1970-01-01
  • 2022-11-10
  • 2015-07-03
  • 2018-06-25
  • 2018-03-08
  • 1970-01-01
相关资源
最近更新 更多