鱼C论坛

 找回密码
 立即注册
查看: 2002|回复: 9

[已解决]请问__getattr__这个函数是如何被调用的

[复制链接]
发表于 2020-7-20 17:46:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
class C:
    def __getattr__(self, item):
        print('该属性不存在!')

实例化:
c = C()时,会打印'该属性不存在!'两次
调用不存在属性时:
c.x
会打印'该属性不存在!'三次
最佳答案
2020-7-20 17:53:52
本帖最后由 Twilight6 于 2020-7-20 17:57 编辑



因为你用的是 PyCharm 或者其他编译器的控制台,而不是 IDLE ,你换到 IDLE 就不会这样多次打印

打印多次是正常现象,可能是因为 PyCharm 之类的编译器有着完整的内置环境

所以不必在意,我还见过一次性打印七八次的....这个不影响正常运行代码

而且不止 __getattr__ ,连 __setattr__ 之类的也会这样

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-20 17:48:43 | 显示全部楼层
>>> class Demo:
        def __getattr__(self, name):
                return '该属性不存在!'

        
>>> demo = Demo()
>>> demo.x
'该属性不存在!'
这是小鲫鱼的答案,有什么不同嘛..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 17:48:49 | 显示全部楼层
这个可能因 Python 版本而异
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 17:53:52 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-7-20 17:57 编辑



因为你用的是 PyCharm 或者其他编译器的控制台,而不是 IDLE ,你换到 IDLE 就不会这样多次打印

打印多次是正常现象,可能是因为 PyCharm 之类的编译器有着完整的内置环境

所以不必在意,我还见过一次性打印七八次的....这个不影响正常运行代码

而且不止 __getattr__ ,连 __setattr__ 之类的也会这样

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-20 17:56:27 | 显示全部楼层
zltzlt 发表于 2020-7-20 17:48
这个可能因 Python 版本而异

我的是3.8版本,请问可以讲的具体一点嘛,不是很理解何时调用__getattr__~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-20 17:58:47 | 显示全部楼层
感谢大佬们的解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-20 18:00:56 | 显示全部楼层
Twilight6 发表于 2020-7-20 17:53
因为你用的是 PyCharm 或者其他编译器的控制台,而不是 IDLE ,你换到 IDLE 就不会这样多次打印

打 ...

确实,在IDLE里面就没有这种问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 18:02:27 | 显示全部楼层
xianhe0621 发表于 2020-7-20 18:00
确实,在IDLE里面就没有这种问题




哈~我当时学到这节课时候也发帖问了论坛的大佬,我用的是 PyCharm
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-20 18:05:37 | 显示全部楼层
Twilight6 发表于 2020-7-20 18:02
哈~我当时学到这节课时候也发帖问了论坛的大佬,我用的是 PyCharm

哈哈,我是看了大佬你讲pycharm的帖子之后开始用pycharm的,确实很方便
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 18:06:35 | 显示全部楼层
xianhe0621 发表于 2020-7-20 18:05
哈哈,我是看了大佬你讲pycharm的帖子之后开始用pycharm的,确实很方便

嘿嘿~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 11:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表