Are*_*efe 3 python arguments class
我尝试编写一个小类,并希望根据重量对项目进行排序。提供了代码,
class Bird:
def __init__(self, weight):
# __weight for the private variable
self.__weight = weight
def weight(self):
return self.__weight
def __repr__(self):
return "Bird, weight = " + str(self.__weight)
if __name__ == '__main__':
# Create a list of Bird objects.
birds = []
birds.append(Bird(10))
birds.append(Bird(5))
birds.append(Bird(200))
# Sort the birds by their weights.
birds.sort(lambda b: b.weight())
# Display sorted birds.
for b in birds:
print(b)
Run Code Online (Sandbox Code Playgroud)
当我运行程序时,我得到的错误堆栈Python TypeError: sort() takes no positional arguments。这里有什么问题?
确切地说:sort不接受任何位置参数。它采用名为的仅关键字参数key:
birds.sort(key=lambda b: b.weight())
Run Code Online (Sandbox Code Playgroud)
从文档中:
sort(*,key = None,reverse = False)
此方法仅使用
<项目之间的比较来对列表进行排序。异常不会被抑制-如果任何比较操作失败,则整个排序操作都会失败(并且列表很可能会处于部分修改的状态)。
sort()接受只能通过关键字传递的两个参数 (仅关键字参数):key指定一个参数的功能,该参数用于从每个列表元素(例如
key=str.lower)中提取比较键。列表中与每个项目相对应的键仅计算一次,然后用于整个排序过程。默认值None表示直接对列表项进行排序,而无需计算单独的键值。[...]
的*签名中的是位置参数和唯一关键字参数之间的隔板; 它作为初始“参数”的位置表明缺少位置参数。
| 归档时间: |
|
| 查看次数: |
2057 次 |
| 最近记录: |