本人比较懒,这里阅读文档胜读各种教学书籍!
这里只是就一些内容进行展示,并没有仔细对文档中很多地方的感悟做细节的展示说明。
首先要理解作用域与命名空间,才能对下面的进行理解
- 下面是对 对象的理解
l写的小实例:
值得注意的地方:
这个会在之后再次叙述:
- https://blog.csdn.net/QQ1131221088/article/details/84100392
容器,迭代对象等概念
对实例对象调用实例方法的初步青涩理解,似乎不太准确,但是有启发:
大概意思好像是 实例对象调用类方法并不是真的调用类方法, 而是通过这个描述, 生成一个新对象(实例方法),这个新对象提供了 实例对象到 类中函数的一个指向, 实际 实例对象调用类里的函数,应该就是调用自己生成的这个 实例方法,我理解可能是这样子的
- https://blog.csdn.net/judgerwang/article/details/95247273
元组和列表表达式的区别,也是对文档当中却区别叙述的 验证
自定义属性访问,逐渐理解底层调用的函数方法
- 对描述器的介绍
https://docs.python.org/zh-cn/3/howto/descriptor.html
https://www.cnblogs.com/harden13/p/9038872.html
以下也是自己当时的一些青涩的理解,不太正确,但确实受益匪浅
我有了解到了描述器。文档中定义的 所有函数都是 非数据描述器。而方法调用只是描述器的一个功能体现,它是面向对象的核心关于描述器。 之前说了 实例对象访问实例方法,实际上是访问类中定义的自定义函数(带self参数的函数),而过程是1. 通过实例.属性名,调用该实例的类对象的 gettertribue 方法,找到类中定义的属性 :调用的函数, 2. 这时函数(描述器),会生成一个新对象,这个对象就是实例方法,里面是打包好的从实例到这个函数的指向。 3. 究其原因,如何实现打包,当调用对象属性为描述器时,改变原有的默认实行调用过程(既在__dict__中调用),而是调用描述器的 __get__方法,第一个参数是当前实例,第二个参数是所属类的实例,第三个参数是所属类。 在此方法中进行 对实例方法的导包操作,完成调用
关于切片
-
一个误区注意事项:
-
另外是一些小趣事:
python 3.8版本的,海象算子,就将表达式内赋值这个操作符定义出来了。 := 允许表达式内赋值
当时看到一篇文章讲的 Guido大大 退位的消息,原来是这个语法的争议,我就说最近读3.6文档的时候有看到过,有点印象~ 一部分原因就是这个表达式内赋值 的提议!大家可以自行查找一下 什么是表达式内赋值,这个海象算子的作用! good job! -
其实还有很多内容与感悟,没有进行记录。读文档真的是意见和作者之间跨时空交流的感觉。因为对文档内容的理解,很大程度上取决于自己的编程经验,结合实际,才能真正理解作者的思想,还有好多地方有所理解,但是并不是大彻大悟,所以还需不断提升编程阅历,文档是不断咀嚼的过程! 加油~
补充:
python中的重写与重载
我看到继承的时候,文档中提到了相关重载的概念,就找了一些博客,大多是对java 重载和重写方法的介绍,其中的规则有的不适用于python,是不是python并没有严格的重载和 重写的定义呢?
测试:
群友解答:
重载要求参数个数或者类型不同。 由于python是弱类型,并且支持动态参数。 所以从严格意义上来说,py是没有重载的。又或者说,py的函数本身就是重载的。 在使用上看起来像重载也是重载的。
可比较对象
可以在自定义的类中实现这些其中一部分方法(是相互作用的,比如实现大于,自动实现小于),之后你的类对象就可以进行自定义的方式进行比较了。