请问__getattr__这个函数是如何被调用的
class C:def __getattr__(self, item):
print('该属性不存在!')
实例化:
c = C()时,会打印'该属性不存在!'两次
调用不存在属性时:
c.x
会打印'该属性不存在!'三次 >>> class Demo:
def __getattr__(self, name):
return '该属性不存在!'
>>> demo = Demo()
>>> demo.x
'该属性不存在!'
这是小鲫鱼的答案,有什么不同嘛..
这个可能因 Python 版本而异 本帖最后由 Twilight6 于 2020-7-20 17:57 编辑
因为你用的是 PyCharm 或者其他编译器的控制台,而不是 IDLE ,你换到 IDLE 就不会这样多次打印
打印多次是正常现象,可能是因为 PyCharm 之类的编译器有着完整的内置环境
所以不必在意,我还见过一次性打印七八次的....这个不影响正常运行代码
而且不止 __getattr__ ,连 __setattr__ 之类的也会这样
zltzlt 发表于 2020-7-20 17:48
这个可能因 Python 版本而异
我的是3.8版本,请问可以讲的具体一点嘛,不是很理解何时调用__getattr__~ 感谢大佬们的解答 Twilight6 发表于 2020-7-20 17:53
因为你用的是 PyCharm 或者其他编译器的控制台,而不是 IDLE ,你换到 IDLE 就不会这样多次打印
打 ...
确实,在IDLE里面就没有这种问题 xianhe0621 发表于 2020-7-20 18:00
确实,在IDLE里面就没有这种问题
哈~我当时学到这节课时候也发帖问了论坛的大佬,我用的是 PyCharm Twilight6 发表于 2020-7-20 18:02
哈~我当时学到这节课时候也发帖问了论坛的大佬,我用的是 PyCharm
哈哈,我是看了大佬你讲pycharm的帖子之后开始用pycharm的,确实很方便{:10_297:} xianhe0621 发表于 2020-7-20 18:05
哈哈,我是看了大佬你讲pycharm的帖子之后开始用pycharm的,确实很方便
{:10_281:} 嘿嘿~
页:
[1]