Python 如何在计算其他类值的最小值后获得类方法的值

Python 如何在计算其他类值的最小值后获得类方法的值,python,oop,min,Python,Oop,Min,我有一个“Node”类,它以x和y作为参数。类方法计算不同的值。我有这个类的多个实例,称为“节点”。我想要的是找到“fcost”最低的节点,并得到该节点的x和y坐标 我不知道如何解决这个问题,如果你能帮助我,我将不胜感激 class节点(): #节点类 定义初始化(self,y,x): self.y=y self.x=x def gcost(自身): 返回self.x+self.y def hcost(自身): 返回self.x*self.y def fcost(自身): 返回self.gcos

我有一个“Node”类,它以x和y作为参数。类方法计算不同的值。我有这个类的多个实例,称为“节点”。我想要的是找到“fcost”最低的节点,并得到该节点的x和y坐标

我不知道如何解决这个问题,如果你能帮助我,我将不胜感激

class节点():
#节点类
定义初始化(self,y,x):
self.y=y
self.x=x
def gcost(自身):
返回self.x+self.y
def hcost(自身):
返回self.x*self.y
def fcost(自身):
返回self.gcost()+self.hcost()#方法,该方法指示
#选择哪个节点
节点1=节点(5,5)
节点2=节点(2,2)
nodes=[node1,node2]#实际上我不知道是否应该创建一个
#节点列表,请告诉我是否应该
#不是
###解决问题的代码###
在这种情况下,node1和node2之间的最低fcost是node2的fcost,因此我希望输出为:
(2,2)
[2,2]
列表或元组,任何一种方式都可以。

使用
min(列表,键=…)

min_node = min(nodes, key=lambda n:n.fcost())

print(min_node, min_node.fcost(), min_node.x, min_node.y)
键必须是函数名


min
将使用它来获取值,并将其进行比较以找到最小值。

您应该使用
min()
函数。您可以以不同的方式使用它,但在这个场景中,我认为最简单的解决方案是使用lambda函数——这是一种用python编写和定义函数的较短方法。 您可以阅读有关
min()
函数的更多信息,以及有关lambda函数的更多信息

无论如何,这段代码应该可以正常工作:

class Node():

# Node class

def __init__(self, y, x):
    self.y = y
    self.x = x        

def gcost(self):
    return self.x + self.y

def hcost(self):
    return self.x * self.y

def fcost(self):
    return self.gcost() + self.hcost()

node1 = Node(5,5)
node2 = Node(2,2)
nodes = [node1, node2]

needed_node = min(nodes, key=lambda x:x.fcost())
needed_list = [needed_node.x, needed_node.y]  # in case you want the result as a list
needed_tuple = (needed_node.x, needed_node.y)  # in case you want the result as a tuple

到底是什么问题?您知道
min
功能吗?您知道您可以向其传递一个
键吗