我正在使用 Pycharm 开发 python 脚本。
我有一个类列表,想按类属性对该列表进行排序。
但是,当我使用时:
results: list[HotelInfo] = get_result()
results.sort(key=lambda x: x.price)
PyCharm 的类型提示显示“x”是“any”类型,无法获取类属性。
即使我设置了
x: CLASS_NAME
,lambda 似乎也没有显示正确的类型。
如何在 PyCharm 中解决这个问题?
正如 Martijn Pieters 在他的 answer 中指出的那样,您可以输入提示一个可调用对象并将其作为您的函数传递。
results: list[HotelInfo] = get_result()
get_price: Callable[[HotelInfo], int] = lambda hotel: hotel.price
results.sort(key=get_price)
这在本地示例中适用于我,PyCharm 可以识别类型。
strings = ["Hello World", "Goodbye World :(", "Cookies"]
func: Callable[[str], int] = lambda s: len(s)
print(sorted(strings, key=func))