Discuss / Python / 这一章真的好难,完全不懂的小白很难直接看懂!!!

这一章真的好难,完全不懂的小白很难直接看懂!!!

Topic source

有为若是

#1 Created at ... [Delete] [Delete and Lock User]

这一章真的好难,完全不懂的小白很难直接看懂!!!

A)    

1.chain()这个一个实例,假设它是chain类实例a,传入了空path(路径)字符,path属性是空的,成功建立了第一轮实例。

2、a.属性x.属性y.属性z.属性xx.的调用顺序是:

a.属性x,因为有__getattr__方法的存在,返回一个新的类实例,暂命名之为chain类实例实例ax(ax.path是‘/users’),然后又继续调用ax.y,变成了chain类实例axy,再然后变成了chain类实例axyz,至于每一步的实例基本属性是是什么依赖于类中的方法定义(大家可以看类初始化方法定义和get方法定义)。  

个人觉得关键之一在于chain这个类定义中有了一个__getattr__方法的存在,(课程中初步访问不存在属性的例子都是返回的是值或者一个方法(函数),但chain类的方法定义返回的是一个新的chain类实例在这种情况下属性访问就继续下去了整个运算过程不中断(此处不注意看代码不真的将代码写出来调试运行容易忽略)

备注:借鉴递归函数的应用,有点递归类实例的意思

另外有一点就是访问某个不存在属性时,__getattr__方法里path一词,是否等同于简单示例中的attr呢? 这又涉及到“抽象”一词的认知了

B)

chain().users('michael') =chain('/users')的这个chain类实例(此时已经是第二轮实例对象)初始化赋值path属性(或当成个方法里的参数)‘michael’(见类定义中initial方法定义和参数定义)

这里头还有多级多层expression的执行顺序和运算等级的设定问题。

有为若是

#2 Created at ... [Delete] [Delete and Lock User]

自己真地没有真正看懂,拜托高手指导一下思路和过程理解。。。

经常丧

#3 Created at ... [Delete] [Delete and Lock User]

https://blog.csdn.net/likeAcat_94/article/details/104559389 知识点2:__getattr__用法 第二条输出,我有举一个简单的例子,你可以看看理解下。


  • 1

Reply