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

zeb*_*amy 5 python class

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

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

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

env = Environment()
nodes = env.setEnv
print(nodes)  
Run Code Online (Sandbox Code Playgroud)

它不会返回我希望看起来像 [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
Run Code Online (Sandbox Code Playgroud)

Dam*_*ero 14

这是python中一个非常常见的错误,很容易重现并陷入其中,但是一旦你这样做,你就永远不会再犯了:

env = Environment()
nodes = env.setEnv
Run Code Online (Sandbox Code Playgroud)

这与:

env = Environment()
nodes = env.setEnv()
Run Code Online (Sandbox Code Playgroud)

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