我有一个关于 python 如何处理传递给 sorted() 的方法的问题。考虑以下小脚本:
#!/usr/bin/env python3
import random
class SortClass:
def __init__(self):
self.x = random.choice(range(10))
self.y = random.choice(range(10))
def getX(self):
return self.x
def getY(self):
return self.y
if __name__ == "__main__":
sortList = [SortClass() for i in range(10)]
sortedList = sorted(sortList, key = SortClass.getX)
for object in sortedList:
print("X:", object.getX(),"Y:",object.getY())
这给出了类似于以下内容的输出:
X: 1 Y: 5
X: 1 Y: 6
X: 1 Y: 5
X: 2 Y: 8
X: 2 Y: 1
X: 3 Y: 6
X: 4 Y: 2
X: 5 Y: 4
X: 6 Y: 2
X: 8 Y: 0
此脚本根据每个实例的 x 字段的值对 SortClass 对象进行排序。但是请注意,sorted 的“key”参数指向 SortClass.getX,而不是任何特定的 SortClass 实例。我对python如何实际使用作为“键”传递的方法有点困惑。像这样调用 getX() 是否有效,因为传递给它的对象与“self”参数的类型相同?这是对“关键”参数的安全使用吗?