类返回<bound method ...>而不是我返回的值(Python)

7
我正在尝试获取我定义的类的返回值,但它一直返回<bound method Environment.setEnv of <__main__.Environment object at 0x0000022E86895828>>而不是我返回的值。
如下所示,我的代码创建了一行*列的网格连接节点,但是这些节点被收集在一个简单的列表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(),需要调用一个方法。 - PRMoureu
是的,实际上你从未调用该方法。 - kindall
1个回答

20

这是Python中非常常见的一个错误,而且很容易重现和犯错,但一旦你犯了这个错误,以后就再也不会犯了:

env = Environment()
nodes = env.setEnv

那并不是一样的:

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

使用(),您在Python中调用一个函数,没有它们,您只是返回函数的引用,而不是"执行函数"。


1
如果函数返回一个列表,而我想在返回的列表上链接一个函数呢?在这种情况下,我会遇到相同的错误。obj.some_list_func().remove('a') - Major Major

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接