gpt4 book ai didi

如果尚未调用方法,Python 会发出警告

转载 作者:太空狗 更新时间:2023-10-30 02:53:24 24 4
gpt4 key购买 nike

假设您想在对象 bar 上调用方法 foo,但是不知何故,在键入方法调用时您直觉地将 foo 视为属性并且您输入了 bar.foo 而不是 bar.foo() (带括号)。现在,两者在语法上都是正确的,因此不会引发错误,但在语义上却大不相同。它已经发生在我身上好几次了(我在 Ruby 方面的经验使它变得更糟)并且在漫长而困惑的调试 session 方面给我造成了沉重的打击。

有没有办法让 Python 解释器在这种情况下打印警告 - 每当你访问一个可调用的属性,但你实际上并没有调用它?

郑重声明 - 我考虑过重写 __getattribute__ 但它很困惑并且最终无法实现目标,因为通过 () 调用函数发生在 __getattribute__ 已返回。

最佳答案

并非在所有情况下都可以这样做,因为有时您不想调用该方法,例如您可能希望将其存储为可调用对象以备后用,例如 callback = object.method

但是您可以使用静态分析工具,例如 pylint 或 PyCharm(我的推荐),如果您编写的语句看起来毫无意义,例如object.method 没有任何赋值。

此外,如果您编写 x = obj.get_x 但意味着 get_x(),那么稍后当您尝试使用 x 时,静态分析工具可能会警告您(如果您幸运的话)x 是一种方法,但需要 X 的实例。

关于如果尚未调用方法,Python 会发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49602872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com