老师 打印key的时候不理解
key=‘{}.{}’.format(self.__attr,key)
为什么打印出来的结果不是
{}.{a}
{a}.{a.b}
{a.b}.{a.b.c}
7
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕凡
2021-11-05 13:21:46
同学,你好!
一、"{ }".format( )为格式化输出,并不会在控制台中输出大括号,如下图:
二、当执行t2.a.b.c时,key的值是这样变化的:key=a,key=a.b,key=a.b.c,代码具体流程如下:
(1)当t2.a运行时,self.__attr的值为空字符串,在判断时为False,执行的就是else中的代码,输出的结果是a,继续执行return语句,调用Test2,并传入key的值;
(2)当t2.a.b运行时,先执行def __getattr__(self,key):方法,此时__attr是a,if判断条件成立,此时的key=“a.b”输出的结果是"a.b",继续执行return语句,调用Test2,并传入key的值;
(3)当t2.a.b.c运行时,先执行def __getattr__(self,key):方法,此时__attr是a.b,if判断条件成立,此时的key=“a.b.c”,输出的结果是"a.b.c";
(4)建议同学在代码中添加以下输出提示,可以更好的理解
祝学习愉快!
Python全栈工程师2020
- 参与学习 人
- 提交作业 5213 份
- 解答问题 2433 个
Facebook曾声称“只招全栈工程师”!全栈用人需求猛增,市面人才紧缺。 0基础进击Python全栈开发,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星